jenkins回滚发布下拉案例1(一)

韵味老鸟 2024-07-18 01:31:40

jenkins回滚发布下拉案例1

jenkins回滚发布下拉案例1

1.jenkins配置安装级联的插件

https://jenkins.umi-meta.com/manage/pluginManager/installed

Active Choices

2.创建流水线作业

rollback-meng

https://jenkins.umi-meta.com/view/batch/job/rollback-meng/configure

a.参数化构建过程,第一个环境选项

类型:Active Choices Parameter

名称:UMI_CLUSTER ,主要标识集群环境

Groovy Script 内容,返回对应的环境

return ["dev", "sit", "prod"]

Description,描述字段

请选择环境

其他使用默认值

b.参数化构建过程,第二个服务选项

类型:Active Choices Reactive Parameter

名称:UMI_SERVICES ,主要标识集群某个环境下的一个服务

Groovy Script 内容,返回对应环境的服务列表

import java.util.concurrent.TimeUnitdef userName = "root"def devIpAddress = "192.168.10.17"def sitIpAddress = "192.168.10.16"def cluster=UMI_CLUSTERdef ipAddressif (cluster== 'dev') { ipAddress = devIpAddress} else if (cluster== 'sit') { ipAddress = sitIpAddress} else { throw new RuntimeException("Invalid UMI_CLUSTER value: ${cluster}")}def sshCommand = """ ssh ${userName}@${ipAddress} ' helm list --output=json | jq -r ".[].name" '"""def processBuilder = new ProcessBuilder('bash', '-c', sshCommand)processBuilder.redirectErrorStream(true)def process = processBuilder.start()process.waitFor(5, TimeUnit.SECONDS)def result = ''if (process.exitValue() == 0) { result = process.text.trim().tokenize('\n')}return result

Description,描述字段

请选择服务

依赖值:Referenced parameters

填写:UMI_CLUSTER,依赖环境

其他使用默认值

c.参数化构建过程,第三个tag选项

类型:Active Choices Reactive Parameter

名称:UMI_VERSION ,主要标识集群环境下某个服务对应的tag信息

Groovy Script 内容,返回对应环境下某个服务的tag

import java.util.concurrent.TimeUnitdef userName = "root"def devIpAddress = "192.168.10.17"def sitIpAddress = "192.168.10.16"//def UMI_CLUSTER='dev'def umiService=UMI_SERVICESdef ipAddressif (UMI_CLUSTER == 'dev') { ipAddress = devIpAddress} else if (UMI_CLUSTER == 'sit') { ipAddress = sitIpAddress} else { throw new RuntimeException("Invalid UMI_CLUSTER value: ${UMI_CLUSTER}")}def sshCommand = """ ssh ${userName}@${ipAddress} ' helm history ${umiService} --output=json | jq -r ".[].app_version" '"""def processBuilder = new ProcessBuilder('bash', '-c', sshCommand)processBuilder.redirectErrorStream(true)def process = processBuilder.start()process.waitFor(5, TimeUnit.SECONDS)def result = ''if (process.exitValue() == 0) { result = process.text.trim().tokenize('\n')}return result
0 阅读:0