1、安装流水线相关插件
2、创建流水线项目
3、对流水线项目进行配置,对相碰变量进行参数化
4、编辑流水线脚本
脚本内容如下
def label = "chench-jnlp" podTemplate(label: label, containers: [ containerTemplate(name: 'maven', image: 'maven:3.6-alpine', command: 'cat', ttyEnabled: true), containerTemplate(name: 'docker', image: 'docker', command: 'cat', ttyEnabled: true), containerTemplate(name: 'kubectl', image: 'cnych/kubectl', command: 'cat', ttyEnabled: true) ], volumes: [ hostPathVolume(mountPath: '/root/.m2', hostPath: '/root/.m2'), hostPathVolume(mountPath: '/root/.kube', hostPath: '/root/.kube'), hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock') ], envVars: [podEnvVar(key: 'JENKINS_TUNNEL', value: 'jenkins-agent:50000')]) { node(label) { stage('Clone') { echo "1.Clone Stage" checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[credentialsId: '03ae1cf6-179f-4eab-8bf9-c6e0703c8f8e', url: 'http://xxx.xxx.xxx.xxx:3000/Wehgc-Lucky/lucky-etc-adapter.git']]]) sh "sed -i 's/10.1.1.233:9006/xxx.xxx.xxx.xxx:9006/g' $WORKSPACE/pom.xml" sh "sed -i 's#url: jdbc:mysql://.*#url: jdbc:mysql://mysql-mysqlha-0.mysql-mysqlha:3306/lucky_etc_adapter?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8#g' $WORKSPACE/$project/src/main/resources/application-dev.yml" sh "sed -i 's/server-addr:.*/server-addr: nacos-0.nacos-headless.wehgc-xm.svc.cluster.local:8848/g' $WORKSPACE/$project/src/main/resources/bootstrap.yml" sh "sed -i 's/hczd365/Hczd365!!/g' $WORKSPACE/$project/src/main/resources/application-dev.yml" sh "sed -i 's/ host: 10.1.1.234/ host: redis/g' $WORKSPACE/$project/src/main/resources/application-dev.yml" sh "sed -i '26s/password: Hczd365!!/password: 1qVI5Rsw7Y/g ' $WORKSPACE/$project/src/main/resources/application-dev.yml" } stage('Compile') { container('maven') { echo "2.compile and package" sh ' cd $project && mvn clean package -Dmaven.test.skip=true' } } stage('Build') { container('docker') { echo "3.Build Docker Image Stage" sh "cd $project && docker build -t ${registry}/$project:$BUILD_ID.1 ." } } stage('Push') { container('docker') { echo "4.Push Docker Image Stage" withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'dockerhub', usernameVariable: 'DOCKER_HUB_USER', passwordVariable: 'DOCKER_HUB_PASSWORD']]) { sh "docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_PASSWORD} ${registry}" sh "docker push ${registry}/$project:$BUILD_ID.1" } } } stage('Deploy') { container('kubectl') { echo "5. Deploy Stage" sh "sed -i 's#latest#$BUILD_ID.1#g' $project/$project.yaml" sh "sed -i 's#_project_#$project#g' $project/Dockerfile" sh "sed -i 's#_project_#$project#g' $project/startup.sh" sh "kubectl -n wehgc-xm set image deployment $project $project=${registry}/$project:$BUILD_ID.1" sh "sed -i 's#$BUILD_ID.1#latest#g' $project/$project.yaml" } } } }
其中credentialsId及后面的git仓库地址这些是由流水线语法生成的
docker仓库这块的用户和密码{DOCKER_HUB_USER} 和${DOCKER_HUB_PASSWORD}是事先定义在凭据里面的