如何在詹金斯(Jenkins)克隆工作?


231

Jenkins已将Gerrit插件安装到位,以便当我们对进行签入时GerritJenkins执行构建,如果成功,则将Gerrit验证其中的修改。如果构建失败,则不是。我的理解是,这是通过在中设置的工作来完成的Jenkins。现在,我们已经创建了一个新分支(git),我想我需要克隆指向另一个分支的现有作业,以便进行相同的工作流并在每次提交时执行构建。有人可以解释我将如何克隆这些工作吗?我似乎看不到通过UI进行操作的方法,甚至看不到通过UI列出作业的方法。


7
您应该能够“复制现有作业”作为“新作业”页面上的选项之一。见stackoverflow.com/questions/3133537/...
nofinator

Answers:


180

要复制现有作业,请转到http://your-jenkins/newJob并使用“复制现有作业”选项。输入现有作业的名称-Jenkins将验证该作业是否存在。

詹金斯首页上的默认选项卡应列出所有现有作业,但也许您的前任已删除该选项卡。您可以创建一个新标签,列出所有来自http://your-jenkins/newView.


请注意,在复制现有作业时,您需要提供名称(访问该作业时未在url中编码),因此,如果作业名称中有空格,则将保留它们。不久,仅输入工作的原始名称,请勿输入其他任何内容。
Yauhen

安装ez-template插件后,将“复制现有作业”应用于模板或使用模板的作业会创建一个依赖于模板的新作业。如果您实际上需要独立副本,则可以删除Use another job as a template配置。
user598656'1

146

您可以克隆作业:

  1. 点击“新项目”链接
  2. 为您的工作起一个新名字
  3. 选择单选按钮“复制现有项目”
  4. 提供您要克隆的作业名称
  5. 点击“确定”

最后,您有了新工作,它反映了克隆工作的所有功能。


117

詹金斯2.9

  1. Jenkins> 新商品

    詹金斯New Item

  2. 输入商品名称 -例如“ MY_CLONE”

    输入商品名称

  3. 指定来源(从中复制)作业> 确定

    当您开始输入名称时,将找到现有值。请注意,这是区分大小写的。

    从确定复制

  4. 如果要保留默认值,请单击“ 保存”

  5. 现在,两个作业都可以在同一位置进行:

    查看工作


3
图片值一千字。找不到我生命中的一点点滴滴。Mulțumiri
michaelok '18

34

New Item> Project Name= abc>而不是Freestyle job选择Copy from job name of already existing jobs

如果您位于要复制到目录之外的文件夹中,请使用../


感谢您的提及../
Satevg

14

如果要在相同的Jenkins中复制但在不同的子文件夹中复制,请创建新项目->使用复制来源。新作业将被克隆到同一目录中。然后使用移动选项将其移动到所需目录中


这就是我用的。仅复制到同一文件夹通常是不够的。谢谢!
donmartin

11

以上所有答案都是好的。但是,如果您为工作创建了“文件夹”,则情况会稍有不同。

单击要在其下创建新作业的文件夹。然后在左侧菜单上单击“新建项目”。现在,您的“新工作” URL将如下所示(假设您正在“我的文件夹”下创建新工作):

http://my-jenkins:8080/job/my-folder/newJob

在下Enter an item name,输入所需的新工作名称。然后使用Copy from底部的文本框。输入源工作的工作路径。

例如,如果您的源作业在文件夹下src-folder,并且作业的名称是src-job,则必须src-folder/src-job在“复制自”框中输入。

希望能帮助到你。


我仍在尝试寻找一种跨文件夹结构复制作业的方法:Jenkins为文件夹中的每个新项目添加文字“作业”,例如,我在localhost:8080 / job / x / job / y / job_1有一份作业,其中x和y是文件夹。job_1是真正的工作。如何将作业复制到localhost:8080 / job / x / job / z / job_1?我没有运气就尝试了所有对源作业的引用。
Heinz

1
转到localhost:8080/job/x/job/y/job_1。在该页面上,您应该看到Full project name。指定来源时,尝试使用该名称。
虎山

如果您有2个文件夹,folder1并且folder2处于同一级别,并且要复制folder1\job1folder2\job1该文件夹folder2,则可以..在文件夹中创建一个新项目,然后使用来返回文件夹结构并复制../folder1/job1
DRz


10

就我而言,我不得不将一份工作从一个詹金斯实例复制到另一个。

因此,首先我查看了旧Jenkins的目录结构(作业/目录名称;还记录了config.xml),然后查看了新Jenkins的目录结构,然后创建了一个具有相同名称/ job的目录并复制到新创建的目录下的config.xml。

然后在“ Manage Jenkins”下,单击“从磁盘重新加载配置”。而已。


感谢“从磁盘重新加载配置”提示!
Aliza

1
是的,当我必须批量复制多个项目时,可以这样做,在“从磁盘重新加载”之前,您还可以在CLI中进行一些必需的手动操作,例如在config.xml中搜索/替换一些参数,文本等。请注意,config.xml所在的目录的名称就是您的作业的名称(因此,如果与Rohit不同,您需要创建一个新的作业,只需给它一个不同的名称即可)。
RAM237 '18

我认为,当您有多层文件夹且内部有许多作业时,这是最佳选择。
卡布雷拉运河

3

创建一个新项目,然后转到最后一个从现有项目复制的选项,只需输入您当前的工作名称,便可以使用该项目的克隆。


1

我无法从子文件夹复制Jenkins的工作。copy from选项未显示我正在寻找的建议。不使用建议,复制工作名称无效。

因此,如果要从外部文件夹创建作业,则需要先在子文件夹中创建作业,然后将其移动到需要放置它的其他文件夹中。



0

这里的所有答案都非常有帮助,但是错过了一个关于詹金斯的非常奇怪的错误。编辑新作业配置后,有时,如果缩放级别过高,则可能看不到saveapply按钮选项。该按钮显示在页面上,并按缩放级别隐藏。您必须缩小页面,直到看到页面左下方的按钮。

奇怪,我知道!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.