【问题标题】:Access environment variable of Jenkins Pipeline inside a Job在 Job 中访问 Jenkins Pipeline 的环境变量
【发布时间】:2017-12-20 15:05:44
【问题描述】:

如何将 Jenkins 流水线的内部版本号传递给作业。 我有一个按以下顺序构建作业的管道-

a --> b --> c --> d

我必须将管道本身的内部版本号传递给作业 c。 此作业将在 Pre Steps 期间使用 Shell 脚本中传递的参数 Build number。

我的管道有一个环境变量 BUILD_NUMBER。

有没有办法在job c里面访问Pipeline的环境变量?

我的尝试

1。使用withEnv 覆盖环境变量但它不起作用。我正在这样做-

withEnv(['SERVER_BUILD_NUMBER=$env.BUILD_NUMBER']) {
   build job: 'app-server-perf', parameters: [string(name: 'appServer_commit_id', value: appServer_commit_id)]
    }

然后在我的作业 c 的 Pre Step shell 脚本中访问如下-

${SERVER_BUILD_NUMBER}

2。将“StringParameter”参数传递给作业 c。该作业现在接收 2 个参数 - 一个字符串值 param1 和管道BUILD_NUMBER param2 的字符串值。我收到以下错误,我认为这是由于错误的参数传递方式-

java.lang.IllegalArgumentException: Could not instantiate {job=Shared Types, parameters=[[@string(name=sharedTypes_commit_id,value=develop2.2)], [@string(name=serverPerformance_build_number,value=494)]]} for BuildTriggerStep(job: String, parameters?: ParameterValue{BooleanParameterValue(name: String, value: boolean) | CredentialsParameterValue(name: String, value: String, description: String) | CvsTagsParamValue(name: String, tagName: String) | FileParameterValue(name: String, file: FileItem{}) | GitParameterValue(name: String, value: String) | JiraIssueParameterValue(name: String, value: String) | JiraVersionParameterValue(name: String, version: String) | LabelParameterValue(name: String, label: String, allNodesMatchingLabel: boolean, nodeEligibility: NodeEligibility{AllNodeEligibility() | IgnoreOfflineNodeEligibility() | IgnoreTempOfflineNodeEligibility()}) | ListSubversionTagsParameterValue(name: String, tagsDir: String, tag: String) | NodeParameterValue(name: String, labels: String[], nodeEligibility: NodeEligibility{AllNodeEligibility() | IgnoreOfflineNodeEligibility() | IgnoreTempOfflineNodeEligibility()}) | PromotedBuildParameterValue(name: String, runId: String, description: String) | RunParameterValue(name: String, runId: String, description: String) | StringParameterValue(name: String, value: String) | TextParameterValue(name: String, value: String) | com.michelin.cio.hudson.plugins.passwordparam.PasswordParameterValue~PasswordParameterValue(name: String, value: String, description: String) | hudson.model.PasswordParameterValue~PasswordParameterValue(name: String, value: String, description: String)}[], propagate?: boolean, quietPeriod?: int, wait?: boolean): java.lang.ClassCastException: class org.jenkinsci.plugins.workflow.support.steps.build.BuildTriggerStep.setParameters() expects class hudson.model.ParameterValue but received class java.util.ArrayList
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:177)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:124)
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:117)
    at groovy.lang.GroovyObject$invokeMethod$6.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)

我已经检查了管道中的选项The project is parameterized。我的参数传递语法是-

   build job: 'server', parameters: [[string(name: 'param1', value: param1)], [string(name: 'param2', value: '${env.BUILD_NUMBER}')]]

【问题讨论】:

  • 广告1。它的死路。广告2。您能否提供构建作业 ivocation + 目标作业配置?我认为调用有问题
  • 请检查以下question的答案。他们可能会帮助你。

标签: jenkins


【解决方案1】:

广告 1。这是死胡同

广告 2。这就是你想要做的。只是尝试正确传递参数

以下是调用两个字符串参数的作业示例: https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel

另请参阅这个 SO 问题:How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin?

【讨论】:

  • 我是 Jenkins 及其条款的新手。在构建作业 c 时,我需要在管道脚本中传递 BUILD_NUMBER 环境变量。是否给出了一些清晰的说明?
  • 我尝试了this 链接,将 $class: 'StringParameterValue' 添加到我的数组列表中并且它有效。我没有尝试您提供的第一个链接,但我认为它应该也可以,会相应地更新。谢谢
  • 万岁!因此,如果有帮助,请接受答案。 +1 也会很好
猜你喜欢
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多