拆分jenkins变量并触发多个作业

时间:2018-06-06 12:02:00

标签: jenkins kubernetes jenkins-pipeline

我需要清理一些Kubernete命名空间(例如hello_namespace,第二个,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 按行分开,现在我想用命名空间像参数一起激活一个作业,我该怎么做? (我的问题是为每个命名空间读取文件并触发独立作业) while(output.nextLine()callJob) 工作电话应该像

build job: 'Delete temp Stage', parameters:
                    [string(name: 'Stage', value: "${env.stage_name}")]

1 个答案:

答案 0 :(得分:0)

我已经知道了:)

    #!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")]
                            }
                       }
                }
            }
        }
    }
}