如何复制和重命名所有Jenkins工作?

时间:2017-01-26 08:59:00

标签: jenkins

我在gitlab上提交了一堆工作。问题是,这些作业中的分支说明符是origin/${gitlabSourceBranch}。每当我想手动重新运行作业时,我必须进入作业配置,将其更改为origin/master,然后再运行。我想避免这种情况,并制作所有这些工作的完整副本,并将它们放在不同的标签中,-manual在其名称的末尾。

我的工作看起来像这样:

[Unit-test-tab]
ModuleName1-unit-test-python
ModuleName2-unit-test-python
ModuleName3-unit-test-java
etc...

我想复制所有这些工作,并将它们放在[Unit-test-tab-manual]下的Jenkins中,并在最后添加-manual-,并使用相同的名称。所以基本上我想制作一个看起来像这样的标签:

[Unit-test-tab-manual]
ModuleName1-unit-test-python-manual
ModuleName2-unit-test-python-manual
ModuleName3-unit-test-java-manual
etc... (all with branch specifier changed to origin/master instead of origin/${gitlabSourceBranch)).

这有什么快速解决方案吗?我知道我可以手动完成,但这很耗时,而且我有很多工作。提前致谢! :)

1 个答案:

答案 0 :(得分:2)

您可以使用Jenkins CLI来实现您的目标。它确实提供了一个命令来创建作为输入传递config.xml的作业。要更改分支,可以使用sed将“origin / $ {gitlabSourceBranch}”更改为“origin / master”。

你可以用以下的Jenkins Job完成所有这些:

  1. 使用get-job CLI命令获取作业的config.xml文件:java -jar jenkins-cli.jar -s https://jenkins.example.com get-job JOBNAME > config.xml
  2. 在作业的config.xml上执行sed; sed应该是这样的:sed -i 's/origin\/${gitlabSourceBranch}/origin\/master/g' config.xml
  3. 使用create-job CLI命令创建具有不同名称的新作业:java -jar jenkins-cli.jar -s https://jenkins.example.com create-job JOBNAME-manual < config.xml