jenkins回滚发布下拉案例(二)

韵味老鸟 2024-07-18 01:32:04

jenkins回滚发布下拉案例 (二)

3.参数化构建,第三个选项

代码:

import hudson.util.Secretimport groovy.json.JsonSlurperdef cluster = UMI_CLUSTERdef service = UMI_SERVICEprintln(service)def command = "helm history $service | awk '{print \$9}'"def sshHostdef sshPort = 22def sshUser = "root"// def sshPassword = Secret.fromString("your_password")if (cluster == 'dev') { sshHost = "192.168.102.26"} else if (cluster == 'sit') { sshHost = "192.168.102.45"} else { sshHost = "echo Unknown value"}def executeRemoteCommand(command, sshHost, sshPort, sshUser) { // def sshCommand = "sshpass -p ${sshPassword.getPlainText()} ssh -p ${sshPort} ${sshUser}@${sshHost} '${command}'" def sshCommand = "ssh -p ${sshPort} ${sshUser}@${sshHost} ${command}" println "Executing remote command: ${sshCommand}" def process = sshCommand.execute() process.waitFor() return process.text.tokenize('\n')}println([].plus(executeRemoteCommand(command, sshHost, sshPort, sshUser)))return [].plus(executeRemoteCommand(command, sshHost, sshPort, sshUser))

4.流水线代码

代码:

pipeline { agent { node { label 'master01' } } options { disableConcurrentBuilds() } environment { USERNAME = 'root' DEV_IP = '192.168.102.26' REVIEW_IP = '192.168.102.16' SIT_IP = '192.168.102.45' UAT_IP = '' PROD_IP = '' } stages { stage('Rollback Service') { steps { script { if (env.UMI_CLUSTER == 'dev') { env.MASTER_IP = "${env.DEV_IP}" } else if (env.UMI_CLUSTER == 'review') { env.MASTER_IP = "${env.REVIEW_IP}" } else if (env.UMI_CLUSTER == 'sit') { env.MASTER_IP = "${env.SIT_IP}" } else if (env.UMI_CLUSTER == 'uat') { env.MASTER_IP = "${env.UAT_IP}" } else if (env.UMI_CLUSTER == 'prod') { env.MASTER_IP = "${env.PROD_IP}" } else { sh 'exit 1' } } sh ''' set -e ssh ${USERNAME}@${MASTER_IP} "helm rollback $UMI_SERVICE \\`helm history $UMI_SERVICE | grep $IMAGE_TAG | grep -v grep | awk '{print \\$1}'\\`" ''' } } }}

UI:

0 阅读:0