0

我想在 Jenkinsfile 中循环这两个列表并使用 1:1 mapping 获取值。我的代码正在运行,但我可以在输出中看到重复的条目。

我在 Jenkinsfile 中有以下两个列表

app = ["app1","app2","app3"]
env = ["prod1","prod2","prod3"]

我的 Jenkinsfile-

    #!/usr/bin/env groovy
    @Library(['jenkinsGlobalLibrary@master']) _
    app = ["app1","app2","app3"]
    env = ["prod1","prod2","prod3"]
    (branchType, branchName) = env.BRANCH_NAME.tokenize('/')
    
    node('java180u161-maven325-pythonanaconda352') {
    
        stage ( 'Checkout' ) {
    
            checkout scm
        }
    
        stage ('Generating list environment wise'){
             pull_from_dev(app,env)
        }
    
    def pull_from_dev(app,env) {
        sh "echo Going to echo a list"
        for (int i = 0; i < app.size(); i++) {
             for (int j = 0; j < env.size(); j++) {
            sh """
            echo "Retrieving   ${app[i]} of ${env[j]} properties "
            """   
      }  }
}

我的输出 -

Retrieving app1 of prod1 properties 
Retrieving app1 of prod1 properties 
Retrieving app1 of prod1 properties 
Retrieving app2 of prod2 properties 
Retrieving app2 of prod2 properties 
Retrieving app2 of prod2 properties 
Retrieving app3 of prod3 properties 
Retrieving app3 of prod3 properties 
Retrieving app3 of prod3 properties 

使用上面的代码,我可以循环“app”和“env”列表,因为我基于 list.size 循环,它循环 3*2 次并生成结果。但我只需要 3 个结果

预期产出 -

Retrieving app1 of prod1 properties 
Retrieving app2 of prod2 properties 
Retrieving app3 of prod3 properties 

请帮助我处理此代码。

4

1 回答 1

1

在我更改了以下功能后,我得到了这个工作 -

def pull_from_dev(app,env) {
    sh "echo Going to echo a list"
        for (int i=0; i < app.size(); i++) {
        sh """
        echo "Retrieving  ${app[i]} of ${env[i]} properties "
          """ 
   }
}
于 2020-07-31T06:49:42.173 回答