在Jenkins多分支声明性管道项目中传递变量

时间:2017-05-16 21:25:30

标签: jenkins jenkins-pipeline

我有项目A和项目B.我想将参数(如BranchName和ArtifactoryID)从项目A传递到项目B.两者都是使用声明脚本Jenkins文件的多分支管道。

当我使用Snippet Generator时,它告诉我项目“未参数化”。在查看多分支管道的配置时,我没有看到参数化它的方法。我错过了什么? (见附件)

enter image description here

enter image description here

google结果显示了这一点,但我不确定它应该如何在多分支管道之间传递参数:https://issues.jenkins-ci.org/browse/JENKINS-32780

1 个答案:

答案 0 :(得分:4)

我想出来了。我在这里的评论中使用了答案:Pipeline pass parameters to downstream jobs

要使用上面显示的示例进行详细说明,我的项目A jenkinsfile将在各阶段之前具有以下内容:

  parameters
  {
    string(name: 'BRANCH_PASSED_OVER', defaultValue: '${env.BRANCH_NAME}', description: 'pass branch value')
    string(name: 'PERSON2', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')
  }

...以及构建步骤阶段的以下内容

  stage('Build downstream')
  {
    steps
    {
    build job: 'BUILD/CMTest2/' + env.BRANCH_NAME.replaceAll("/", "%2F"), wait: false, parameters: [string(name: 'PERSON2', value: params.PERSON2), string(name: 'PASS_BRANCH_NAME', value: env.BRANCH_NAME)]
    }
  }

项目B 中,然后在我的jenkins文件中,我可以像这样调用param:

  stage('Collect Info')
  {
    steps
    {
      echo "Hello ${params.PERSON2}"
      echo "PASS_BRANCH_NAME: ${params.PASS_BRANCH_NAME}"
    }
  }