【问题标题】:Jenkins pipeline to call other pipeline stageJenkins 管道调用其他管道阶段
【发布时间】:2018-02-02 14:17:18
【问题描述】:

我正在使用 Jenkins Pipeline,并且有一个期望是:

在管道作业'Test A' - Stage 'Checkout_A' 它调用其他管道作业'Test B' - Stage 'Checkout_B' ,在测试B中的那个阶段完成后,控制器应该返回到管道作业'Test A ' 并执行 Stage ('Build_A') 再次调用管道作业 'Test B' - Stage ('Build_B') 然后控制器应返回到管道作业 'Test A' 并执行 Stage ('Transfer_A')。

1)以下是我正在使用的语法,但它没有按上述预期工作,请就如何实现这种方法提出您的意见。

2)我想使用这种方法主要是在上游作业本身而不是在下游作业中显示管道的不同阶段。是否有任何方法或插件可用于显示下游作业的阶段以及上游作业流程。

Test A
_______

Stage ('Checkout_A')
build job: 'Test B, stage: 'Checkout_B'', 
		  parameters: [string(name: 'GIT_URL', value: String.valueOf(ssh://git@xxx/aaa.git )),
		  string(name: 'CREDENTIALS', value: String.valueOf('xxxx123')
		   ] 
		  
Stage ('Build_A')
build job: 'Test B, stage: 'Build_B', 
		  parameters: [string(name: 'GIT_URL', value: String.valueOf(ssh://git@xxx/aaa.git )),
		  string(name: 'CREDENTIALS', value: String.valueOf('xxxx123')
		   ]

Stage ('Transfer_A')
build job: 'Test B', Stage: 'Transfer_B'

Test B
________

 stage 'Checkout_B'
          git (url: '${GIT_URL}',
          credentialsId: '${CREDENTIALS}')
		  build job: 'Test A, stage: Build_A'
		  
Stage ('Build_B')
        bat 'call "E:\\MSBuild\\12.0\\Bin\\MSBuild.exe" Sample.sln '
		  build job: 'Test A, stage: Transfer_A'
		  
Stage ('Transfer_B')
       Xcopy(Source, destination)

【问题讨论】:

  • 什么“不工作”?我假设stage 参数是build 作业,对吧?
  • 是的,我只想调用其他管道作业的阶段,而不是从头到尾执行。
  • 参考以下答案:*.com/questions/43337070/…

标签: jenkins jenkins-plugins jenkins-pipeline


【解决方案1】:

如您所见,build 步骤没有名为stage 的参数。您根本无法在其他作业中运行任意阶段 - 您只能触发完整的作业,从头到尾。如果您真的想将其分离出来(也是为了可重用性?),请让舞台的内容成为一项额外的工作。

关于调用作业中的内联可视化:不,我不希望这很快成为可能。查看roadmap,您只会看到您实际获得链接以转到所调用工作的项目。

【讨论】:

  • 感谢您的意见。我还想检查是否有任何方法可以在上游作业本身而不是在下游作业中显示管道的不同阶段,即显示下游作业的阶段以及上游作业流程。
  • 可能不存在。
最近更新 更多