首页 > 解决方案 > 包含所有参数值列表或参数列表中的单个值的 Jenkinsfile

问题描述

我想使用带有所有参数值列表或参数列表中的单个值的 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 列表中的所有值运行作业。我尝试了所有但它没有采用所有值'id1','id2','id3','id4','id5'

标签: jenkinsjenkins-pipelineurbancode

解决方案


您需要在参数之外的 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"
                }
            }
            
          }
        }
  }

}

推荐阅读