【问题标题】:Jenkinsfile with list of all parameter values or single value from parameter list包含所有参数值列表或参数列表中的单个值的 Jenkinsfile
【发布时间】:2021-06-01 21:45:38
【问题描述】:

我想使用带有所有参数值列表或参数列表中的单个值的 jenkinsfile 运行 jenkins 作业。

def deploy(env) {

step([$class: 'UCDeployPublisher',
siteName: siteName,
deploy: [
$class: 'com.urbancode.jenkins.plugins.ucdeploy.DeployHelper$DeployBlock',
deployApp: appName,
deployEnv: 'DEV',
deployVersions: "${compName}:${version}",
deployProc: simpleDeploy,
deployOnlyChanged: false,
deployReqProps: "ID=${params.ID}"
]]) 


CHOICES = [ 'id1', 'id2', 'id3', 'id4', 'id5' ]
PARAMETERS = CHOICES + "all"

 parameters {

    choice(
        name: 'ID',
        choices: PARAMETERS,
    )
    stage (DEV') {

        steps {
            script {
             if (params.ID == "all"){
                     CHOICES.each {
                     echo "$it"
                     }
                 deploy('devl') ===> this will call my deploy function
             }
             else {
                     echo "$params.ID"
                 deploy('devl') ===> this will call my deploy function
            }
         }
      }
    }

我能够通过从下拉列表中选择每个值来运行作业。但我也想使用 ID 列表中的所有值运行作业。我尝试使用 all 但它没有采用所有值 'id1'、'id2'、'id3'、'id4'、'id5'

【问题讨论】:

    标签: jenkins jenkins-pipeline urbancode


    【解决方案1】:

    您需要在参数之外的 var 中定义选项,然后将其用作 choices 例如

    CHOICES = [ 'id1', 'id2', 'id3', 'id4', 'id5' ]
    PARAMETERS = CHOICES + "all"
    pipeline {
        agent any
        parameters {
            choice(name: "ID", choices: PARAMETERS )
        }
        stages {
            stage('Test') {
              steps {
                script {
                    if (params.ID == "all"){
                        CHOICES.each {
                            echo "$it"
                        }
                    }
                    else {
                        echo "$params.ID"
                    }
                }
                
              }
            }
      }
    
    }
    

    【讨论】:

    • 嗨..当我使用所有不从列表中获取 id 时。相反,它会打印所有多次 stage (DEV') { steps { script { if (params.ID == "all"){ CHOICES.each { echo "$ID" } deploy('devl') ===> 这将调用我的部署函数 } else { echo "$params.ID" deploy('devl') ===> 这将调用我的部署函数 } } } }
    • 是的,那是因为你有{ echo "$ID" } 你希望{ echo "$it" }CHOICES.each 中获取可迭代对象
    • 当我执行 $it 时,它正在打印列表,但它们没有被传递到后端城市部署。抱歉问了很多问题,我是詹金斯的新手。我必须将所有 Id 的列表作为列表传递给城市部署
    • 您是否将$it 传递给部署功能并在那里使用它?可能值得用管道的当前状态更新您的帖子。
    • 更新了我的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2017-04-04
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多