jenkins - 拆分詹金斯变量并触发多个作业
问题描述
我需要清理一些 Kubernete 命名空间(例如,hello_namespace、second、my_namespace1、my_namespace45、my_namespace44,我使用 jenkins 作业来完成。我用 kubectl 读取了我需要清理的命名空间,然后我想解雇一个删除作业它,我的代码应该是这样的
pipeline {
agent { label 'master' }
stages {
stage('Clean e2e') {
steps {
script {
sh "kubectl get namespace |egrep 'my_namespace[0-9]+'|cut -f1 -d ' '>result.txt"
def output=readFile('result.txt').trim()
}
}
}
此代码的输出将是具有值的变量 $output: my_namespace1 my_namespace45 my_namespace44 以行分隔,现在我想使用参数之类的命名空间来启动作业,我该怎么做?(我的问题是读取文件并为每个命名空间触发独立作业)而(output.nextLine()callJob)作业调用应该像
build job: 'Delete temp Stage', parameters:
[string(name: 'Stage', value: "${env.stage_name}")]
解决方案
我已经明白了:)
#!groovy
pipeline {
agent { label 'master' }
stages {
stage('Clean up stages') {
steps {
script {
sh '(kubectl get namespace |egrep "namespace[0-9]+"|cut -f1 -d " "|while read i;do echo -n $i";" ; done;)>result.txt'
def stages = readFile('result.txt').trim().split(';')
for (stage in stages) {
if (stage?.trim()) {
echo "deleting stage: $stage"
build job: 'Delete temp Stage', parameters:
[string(name: 'Stage', value: "$stage")]
}
}
}
}
}
}
}
推荐阅读
- node.js - Sequelize WHERE 根据编程条件强制或不强制一个条件
- javascript - Nx Monorepo - 如何在主 Nest 应用程序中使用 NestJs 库
- java - Spring Boot / Android @RequestParam 的 Date 对象与 Android 客户端中发送的对象不同
- gradle - 为什么 Gradle javadocjar 任务编码错误
- javascript - 尝试使用 node.js 中的用户输入执行 do-while 循环 - 无限循环?
- node.js - 在 Heroku 上部署我的 node.js 项目时出现应用程序错误
- javascript - javascript navigator.onLine 仅检查与互联网设备连接的系统而不是互联网
- java - 当我将数组列表传递给 DBHelper 以更新数据库(Android SQlite)时出现 IndexOutOfBoundException
- r - 无法使用 cat() 渲染自定义块
- react-native - 无法使用 react-native-sqlite-storage 在 SQLite 中执行任何查询 ...我正在为 android tv 应用程序尝试它