【问题标题】:Jenkins Job DSL: Using parameters in groovyScript in job stepJenkins Job DSL:在作业步骤中使用 groovyScript 中的参数
【发布时间】:2018-03-16 18:54:02
【问题描述】:

对于我的构建作业“generated-job-1”,我需要几个参数,这些参数在通过 URL 触发构建(生成的作业 1)时传入。

这是我在 SeedJob DSL 中使用参数的作业定义:

job('generated-job-1'){
label ('master')
parameters{
    stringParam('DEPLOY_URI', 'https://192.168.200.176/hyperManager', 'Provide the URL where DeploymentManager can be accessed.')
    stringParam('REG_ID', '12', 'The id of the owner (Registration) of this deployment.')
}
steps {
    groovyCommand(readFileFromWorkspace('stepscript.groovy')){
        prop('name', 'value')
        prop('DEPLOY_URI', $DEPLOY_URI)
    }
}

}

我尝试使用 DEPLOY_URI、$DEPLOY_URI 和 ${DEPLOY_URI},但构建失败并显示不同的错误消息,例如 没有这样的属性:类的 DEPLOY_URI:javaposse.jobdsl.dsl.helpers.step.GroovyContext

或 错误:(脚本,第 12 行)没有此类属性:$DEPLOY_URI 类:javaposse.jobdsl.dsl.helpers.step.GroovyContext

或 错误:(脚本,第 12 行)没有方法签名:javaposse.jobdsl.dsl.helpers.step.GroovyContext.$() 适用于参数类型:(script$_run_closure1$_closure3$_closure4$_closure5) 值:[script$ _run_closure1$_closure3$_closure4$_closure5@1a11cf0]

  1. 如何定义这些参数并将其传递给我的 step-script.groovy?
  2. 如何在其他步骤(例如 shell 或 batchFile)中使用这些参数?
  3. 如何访问我的 step-script.groovy 中的这些参数以处理给定的数据?

我现在搜索了一段时间并努力让它工作......没有成功。

非常感谢您的帮助,因为我是 Job DSL 和 Groovy 的新手。

提前致谢, 安妮

【问题讨论】:

  • 我找到了这个示例脚本(来自 wiki.jenkins-ci.org/display/JENKINS/…)并让它与 SystemGroovyCommand 一起工作,但是:一定有一种方法可以将参数传递给从站,以便在他们的构建中使用?!

标签: jenkins groovy jenkins-job-dsl


【解决方案1】:

您需要将变量名放在引号中,以便在执行生成的作业时进行评估,而不是在 DSL 脚本运行时进行评估。

job('generated-job-1') {
    parameters {
        stringParam('DEPLOY_URI', '...', '...')
    }
    steps {
        groovyCommand(readFileFromWorkspace('stepscript.groovy')) {
            prop('DEPLOY_URI', '$DEPLOY_URI')
        }
    }
}

【讨论】:

  • 感谢您的帮助!有用。可以使用 def uri = System.getProperty('DEPLOY_URI') 来读取 GroovyCommand(不是 SystemGroovyCommand!)中的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 2021-01-14
相关资源
最近更新 更多