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

eek*_*nky 0 jenkins-plugins jenkins-pipeline

我有一个 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?"
          }
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

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

containerInstanceIdsToStartOn = "463b8b6f-9388-4fbd-8257-b056e28c0a43"
region = "eu-west-1"
cluster = "mis-core-dev"
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

lvt*_*llo 5

在参数块中定义参数:

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
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

[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
Run Code Online (Sandbox Code Playgroud)