首页 > 解决方案 > 拆分詹金斯变量并触发多个作业

问题描述

我需要清理一些 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}")]

标签: jenkinskubernetesjenkins-pipeline

解决方案


我已经明白了:)

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

推荐阅读