jenkins job节点阶段内的DSL访问字符串参数

时间:2018-03-16 06:04:17

标签: jenkins-pipeline jenkins-job-dsl

我正在尝试使用以下DSL脚本创建Jenkins管道,

pipelineJob('pipeline') 
{
  logRotator(numToKeep = 100)
    parameters {
        stringParam("ENV", "dev" , "dev")
        }
definition {    
    cps {
      sandbox()
      script("""
        node {
          stage('Pre Build Test') {

              sh '''#!/bin/bash
              echo "Will deploy to ${params.ENV}" '''
          }
        }""".stripIndent())
    }
  }
}    

想要在节点阶段shell脚本中访问stringParam,上面一个${params.ENV}不起作用,有没有其他方法可以访问stage shell脚本中的字符串参数?

1 个答案:

答案 0 :(得分:0)

简单的$ {ENV}应该这样做,而不是$ {params.ENV}

无论如何,您的代码看起来不像是有效的管道。您最好切换到声明性管道,例如:

pipeline
{
    parameters
    {
        string(name: 'ENV', defaultValue: 'dev', description: 'dev')
    }

    options
    {
        buildDiscarder(logRotator(numToKeepStr: '100'))
    }

    agent any
    stages
    {
        stage('Pre Build Test')
        {
            steps
            {
                script
                {
                    sh '''
                        #!/bin/bash
                        echo "Will deploy to ${ENV}" 
                    '''
                }
            }
        }
    }
}