def gitlab_auth = "6f09382c-0aa3-4cb2-9721-7a87950aa7ac"
def code_addr = "https://**************.git"
def k8s_auth = "e892c72a-0eb4-40e3-80f3-80ec85da8982"
def image_name = "**************/ruoyi-end:${env.BUILD_NUMBER}"
pipeline {
agent {
kubernetes {
label "jenkins-agent"
yaml '''
apiVersion: v1
kind: Pod
metadata:
name: jenkins-agent
spec:
securityContext:
runAsUser: 0
fsGroup: 1000
containers:
- name: jnlp
image: "*********************/jenkins-agent"
volumeMounts:
- name: workspace
mountPath: /home/jenkins/agent/workspace/
securityContext:
runAsUser: 0
- name: kaniko
image: "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/kaniko-project/executor:v1.23.1-debug"
command: ['cat']
tty: true
securityContext:
runAsUser: 0
volumeMounts:
- name: docker-config
mountPath: /kaniko/.docker
- name: workspace
mountPath: /home/jenkins/agent/workspace/
- name: maven-data
mountPath: /root/.m2
imagePullSecrets:
- name: aliyun-auth
volumes:
- name: docker-config
secret:
secretName: aliyun-auth
items:
- key: .dockerconfigjson
path: config.json
- name: workspace
emptyDir: {}
- name: maven-data
hostPath:
path: /tmp/m2
type: DirectoryOrCreate
'''
}
}
parameters {
gitParameter branch: '', branchFilter: '.*', defaultValue: 'origin/master', description: '请选择你要发布的分支', name: 'Branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'GitParameterDefinition'
choice choices: ['1', '3', '5'], description: '请选择你要发布的副本数', name: 'Replicas'
}
stages {
stage('1、拉取代码') {
steps {
checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${gitlab_auth}", url: "${code_addr}"]])
sh '''
echo "workspace: ${WORKSPACE}"
chmod 755 /home/jenkins/agent/workspace
find ${WORKSPACE}@tmp/ -name "*.sh.copy" -exec chmod +x {} \\;
'''
}
}
stage('2、代码编译') {
steps {
container('jnlp') {
sh '''
mvn clean package -Dmaven.test.skip=true
'''
}
}
}
stage('3、构建镜像') {
steps {
container('kaniko') {
sh '''
cd ${WORKSPACE}
cat > Dockerfile <<EOF
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:17.0.2-jdk
WORKDIR /app
COPY ruoyi-admin/target/ruoyi-admin.jar .
CMD ["java","-jar","ruoyi-admin.jar"]
EOF
ls -l ruoyi-admin/target/ruoyi-admin.jar # 确认文件存在
/kaniko/executor \\
--context ${WORKSPACE} \\
--dockerfile Dockerfile \\
--destination *****************/ruoyi-end:${BUILD_NUMBER}
'''
}
}
}
stage('4、发布到k8s') {
steps {
container('jnlp') {
configFileProvider([configFile(fileId: "${k8s_auth}", targetLocation: 'aliyun-k8s')]) {
sh """
echo "${image_name}"
sed -i "s#image_name#${image_name}#" ruoyi-end.yaml
cat ruoyi-end.yaml
kubectl --kubeconfig=aliyun-k8s apply -f ruoyi-end.yaml
"""
}
}
}
}
}
}
基于k8s的cicd流水线(containerd)
发布于 22 天前 21 次阅读
Comments NOTHING