代码之家  ›  专栏  ›  技术社区  ›  eekfonky

Jenkins声明性管道-参数中的用户变量

  •  0
  • eekfonky  · 技术社区  · 6 年前

    我有一个Jenkinsfle。我需要从中传递参数 使用参数生成 插件,并且在脚本中定义了变量。我两个都不能工作。可能是语法问题?

    #!/usr/bin/env groovy
    
    pipeline {
      agent any
    
      stages {
       stage('Config API (dev)') {
          steps {
            script {
                apiName = "config_API"
                taskDefinitionFamily = "mis-core-dev-config"
                taskDefinition = "mis-core-dev-config"
                if (params.apiName.contains('Stop Task')) {
                build(job: 'Stop ECS Task (utility)',
                parameters: [
                string(name: 'region', value: params.region),
                string(name: 'cluster', value: params.cluster),
                string(name: 'family', value: params.taskDefinitionFamily)
                ])
              }
                else if (params."${apiName}".contains('Start Task')) {
                build(job: 'Start ECS Task (utility)',
                parameters: [
                string(name: 'region', value: params."${region}"),
                string(name: 'cluster', value: params."${cluster}"),
                string(name: 'taskDefinition', value: params."${taskDefinition}"),
                string(name: 'containerInstanceIds', value: params."${containerInstanceIdsToStartOn}")
                ])
              }
                else if (params."${apiName}" == null || params."${apiName}" == "") {
                echo "Did you forget to check a box?"
              }
            }
          }
        }
    

    我的 Build with parameters 变量在GUI中设置为“字符串变量,

    containerInstanceIdsToStartOn = "463b8b6f-9388-4fbd-8257-b056e28c0a43"
    region = "eu-west-1"
    cluster = "mis-core-dev"
    

    我哪里做错了?

    1 回复  |  直到 6 年前
        1
  •  5
  •   lvthillo    6 年前

    在参数块中定义参数:

    pipeline {
        agent any
    
        parameters {
            string(defaultValue: 'us-west-2', description: 'Provide your region', name: 'REGION')
        }
    
    
        stages {
            stage('declarative'){
                steps {
                    print params.REGION
                     sh "echo ${params.REGION}"
                }
            }
    
            stage('scripted'){
                steps {
                    script {
                        print params.REGION
                    }
                }
            }
        }
    }
    

    输出:

    [Pipeline] {
    [Pipeline] stage
    [Pipeline] { (declarative)
    [Pipeline] echo
    us-west-2
    [Pipeline] sh
    
    [test] Running shell script
    + echo us-west-2
    us-west-2
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (scripted)
    [Pipeline] script
    [Pipeline] {
    [Pipeline] echo
    us-west-2
    [Pipeline] }
    [Pipeline] // script
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    Finished: SUCCESS