How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin?
如何从
我假设这项工作是同一个github组织下的另一个存储库,该存储库已经有自己的Jenkins文件。
我也只想在分支名称为master时执行此操作,因为触发任何本地分支的下游构建没有意义。
更新:
1 2 3 4 |
尽管如此,执行时我还是报错
No parameterized job named some-downtream-job-name found
我确定这项工作存在于jenkins中,并且与当前工作位于同一组织文件夹下。 这是另一个具有自己的
请注意,此问题特定于GitHub Organization Plugin,该插件可自动为GitHub Organization中的每个存储库和分支创建和维护作业。
首先,将
其次,在多分支项目中,可以使用环境变量
第三,
因此,您打算写的可能是
1 2 3 |
除了上述答案外:我想通过传递给第二个管道的简单参数开始工作,并在https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow上找到答案。
所以我用了:
1 2 3 | stage ('Starting ART job') { build job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]] } |
管道中的命令
github上的例子
这项工作必须存在于詹金斯并且可以参数化。
至于分支,我想你可以从git中读取它
您可以使用Jenkins Pipeline中的
这是
如何使用
-
job :要构建的下游作业的名称。可能是另一项Pipeline工作,但更常见的是自由泳或其他项目。- 如果作业与此上游Pipeline作业位于同一文件夹中,请使用简单名称;否则,请使用简单名称。
-
您可以改用相对路径,例如
../sister-folder/downstream -
或者您可以使用
/top-level-folder/nested-folder/downstream 之类的绝对路径
使用分支作为参数触发另一个作业
在我公司,我们的许多分支都包含" /"。您必须将" /"的任何实例替换为"%2F"(显示在作业的URL中)。
在此示例中,我们使用相对路径
1 2 3 4 5 6 7 8 9 | stage('Trigger Branch Build') { steps { script { echo"Triggering job for branch ${env.BRANCH_NAME}" BRANCH_TO_TAG=env.BRANCH_NAME.replace("/","%2F") build job:"../my-relative-job/${BRANCH_TO_TAG}", wait: false } } } |
使用内部版本号作为参数触发另一个作业
1 2 3 4 5 |
并行触发许多作业
资料来源:https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
有关并行的更多信息,请访问:https://jenkins.io/doc/book/pipeline/syntax/#parallel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | stage ('Trigger Builds In Parallel') { steps { // Freestyle build trigger calls a list of jobs // Pipeline build() step only calls one job // To run all three jobs in parallel, we use"parallel" step // https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel parallel ( linux: { build job: 'full-build-linux', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)] }, mac: { build job: 'full-build-mac', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)] }, windows: { build job: 'full-build-windows', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)] }, failFast: false) } } |
或者:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
为该任务使用构建作业插件,以便从jenkins文件触发其他作业。
您可以在执行中添加各种逻辑,例如并行,节点和代理选项以及触发外部作业的步骤。为此,我给出了一些易于阅读的菜谱示例。
1.使用条件示例从jenkins文件触发外部作业的示例:
1 2 3 4 5 6 | if (env.BRANCH_NAME == 'master') { build job:'exactJobName' , parameters:[ string(name: 'keyNameOfParam1',value: 'valueOfParam1') booleanParam(name: 'keyNameOfParam2',value:'valueOfParam2') ] } |
2.example使用条件示例从jenkins文件触发多个作业:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def jobs =[ 'job1Title'{ if (env.BRANCH_NAME == 'master') { build job:'exactJobName' , parameters:[ string(name: 'keyNameOfParam1',value: 'valueNameOfParam1') booleanParam(name: 'keyNameOfParam2',value:'valueNameOfParam2') ] } }, 'job2Title'{ if (env.GIT_COMMIT == 'someCommitHashToPerformAdditionalTest') { build job:'exactJobName' , parameters:[ string(name: 'keyNameOfParam3',value: 'valueOfParam3') booleanParam(name: 'keyNameOfParam4',value:'valueNameOfParam4') booleanParam(name: 'keyNameOfParam5',value:'valueNameOfParam5') ] } } |