pipeline { agent any stages { stage('develop build and upload') { when { branch "develop" } steps { script { try { sh ''' docker login http://172.16.102.3:30648 -u ${reg_username} -p ${reg_passwd} docker build -t 172.16.102.3:30648/maimai/${service_name}:latest . docker push 172.16.102.3:30648/maimai/${service_name}:latest kubectl rollout restart deployment ${service_name} -n dev ''' } catch(err) { sh 'exit 1' } } } } stage('test build only') { when { expression {ref ==~ 'refs/tags/test-.*' } } steps { script { try { sh ''' docker login http://172.16.102.3:30648 -u ${reg_username} -p ${reg_passwd} docker build -t 172.16.102.3:30648/maimai/${service_name}:${result} . docker push 172.16.102.3:30648/maimai/${service_name}:${result} ''' } catch(err) { exit 1 } } } } stage('master build only') { when { expression {ref ==~ 'refs/tags/prod-.*' } } steps { script { try { sh ''' docker login http://172.16.102.3:30648 -u ${reg_username} -p ${reg_passwd} docker build -t 172.16.102.3:30648/maimai/${service_name}:${result} . docker push 172.16.102.3:30648/maimai/${service_name}:${result} ''' } catch(err) { exit 1 } } } } } environment { reg_username = 'maimai' reg_passwd = 'M9hUQk4Ti0l0lHZi' service_name = 'xj-irrigation-model' result = sh(script: """echo $ref | awk -F"/" '{print \$NF}'""", returnStdout: true).trim() git_commit_msg = sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim() git_commit_user = sh (script: 'git show -s --pretty=%an', returnStdout: true).trim() } post { success { sh """curl --location --request POST 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d31913db-bb53-4081-9e2d-f707111dbee1' \ --data-raw '{\"msgtype\":\"text\",\"text\":{\"content\":\"成功: [${env.JOB_NAME} [${env.BUILD_NUMBER}]](${git_commit_msg}) @${git_commit_user}\"}}'""" } failure { sh """curl --location --request POST 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d31913db-bb53-4081-9e2d-f707111dbee1' \ --data-raw '{\"msgtype\":\"text\",\"text\":{\"content\":\"失败: [${env.JOB_NAME} [${env.BUILD_NUMBER}]](${git_commit_msg}) @${git_commit_user}\"}}'""" } } triggers { GenericTrigger( genericVariables: [[key: 'ref', value: '$.ref']], causeString: 'Triggered on $ref', token: 'xj-irrigation-model', printContributedVariables: true, printPostContent: true, silentResponse: false, regexpFilterText: '$ref/'+BRANCH_NAME, regexpFilterExpression: '(^refs/heads/develop/develop$)|(^refs/tags/test-.*/test$)|(^refs/tags/prod-.*/master$)' ) } }