如何在 Jenkins 中克隆工作?

Posted

技术标签:

【中文标题】如何在 Jenkins 中克隆工作?【英文标题】:How do I clone a job in Jenkins? 【发布时间】:2014-07-13 08:18:49 【问题描述】:

Jenkins 具有 Gerrit 插件,因此当我们签入到 Gerrit 时,Jenkins 执行构建,如果成功,则验证 Gerrit 中的修改。如果构建失败,那么它不是。我的理解是,这是通过在Jenkins 中设置的工作来完成的。我们现在创建了一个新分支 (git),我想我需要克隆指向另一个分支的现有作业,以便发生相同的工作流并在每次提交时执行构建。有人可以解释我如何克隆这些工作吗?我似乎看不到通过 UI 完成此任务的方法,我什至看不到通过 UI 列出作业的方法。

【问题讨论】:

您应该能够将“复制现有工作”作为“新工作”页面上的选项之一。见***.com/questions/3133537/… 【参考方案1】:

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

Jenkins首页的默认选项卡应该列出所有现有的工作,但可能你的前任删除了该选项卡。您可以创建一个新选项卡,列出来自http://your-jenkins/newView. 的所有工作

【讨论】:

请注意,在复制现有作业时,您需要提供名称(访问作业时不编码为 url),因此如果作业名称中有空格,它们将被保留。很快,只放工作的原始 name,别无其他。 安装 ez-template 插件后,将“复制现有作业”应用于模板或使用模板的作业创建依赖于模板的新作业。如果你真的想要一个独立的副本,你可以删除Use another job as a template 配置。【参考方案2】:

您可以克隆作业:

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

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

【讨论】:

【参考方案3】:

詹金斯 2.9

    Jenkins > 新项目

    输入项目名称 - 例如“我的克隆”

    指定源(复制)作业 > 确定

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

    如果要保留默认值,请单击保存

    现在这两个工作都在同一个位置:

【讨论】:

图片值一千字。找不到我一生的小下拉菜单。穆尔苏米里【参考方案4】:

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

如果您位于要从目录中复制出来的文件夹中,请使用../

【讨论】:

感谢../【参考方案5】:

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

【讨论】:

这是我用的。仅仅复制到同一个文件夹通常是不够的。谢谢!【参考方案6】:

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

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

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

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

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

希望对你有帮助。

【讨论】:

我仍在尝试找到一种跨文件夹结构复制作业的方法:詹金斯为每个作为文件夹的新项目添加文字“作业”,例如我在 localhost:8080/job/x/job/y/job_1 有一份工作,其中 x 和 y 是文件夹。 job_1 是真正的工作。如何将此作业复制到 localhost:8080/job/x/job/z/job_1?我尝试了所有对源作业的引用,但没有成功。 转到localhost:8080/job/x/job/y/job_1。在该页面上,您应该看到Full project name。指定来源时尝试使用它。 如果您有两个文件夹folder1folder2在同一级别,并且您想将folder1\job1复制到folder2\job1,您可以在文件夹folder2中创建一个新项目,然后使用.. 返回文件夹结构并复制../folder1/job1【参考方案7】:

就我而言,我必须将作业从一个 jenkins 实例复制到另一个实例。

所以首先我查看了旧 Jenkins 的目录结构(作业/目录名称;还注意到了 config.xml),然后在新 jenkins 的目录结构下创建了一个具有相同名称/作业的目录并复制到这个新创建的目录下的 config.xml。

然后在“管理 Jenkins”下,点击“从磁盘重新加载配置”。就是这样。

【讨论】:

感谢“从磁盘重新加载配置”提示! 是的,当我必须批量复制几个项目时这样做,在“从磁盘重新加载”之前,您还可以在 CLI 中执行一些必要的手动魔术,例如搜索/替换一些参数、文本片段, config.xml 中的等。请注意,config.xml 所在目录的名称就是你的 Job 的名称(因此,如果与 Rohit 不同,你需要创建一个新的 Job,只需给它一个不同的名称即可)。跨度> 在我看来,当你有多个文件夹,里面有很多作业时,这是最好的选择。【参考方案8】:

您也可以使用Copy project link 插件。

这将在项目的左侧面板上添加一个链接:

以下屏幕将要求输入新的作业名称:

【讨论】:

【参考方案9】:

创建一个新项目并转到最后一个您会发现从现有复制的选项,只需写下您当前的工作名称,您就可以使用该项目的克隆。

【讨论】:

【参考方案10】:

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

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

【讨论】:

【参考方案11】:

你可以使用Jobcopy Builder plugin

【讨论】:

【参考方案12】:

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

奇怪,我知道!

【讨论】:

以上是关于如何在 Jenkins 中克隆工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins 中通过 *** 拉取/克隆 git 存储库?

jenkins-github 克隆失败,没有 kex alg 错误

如何在詹金斯中安排多个配置文件?

詹金斯克隆问题。用户可以编辑原始作业的配置

如何将丢失的 gradle-wrapper.jar 添加回 Git 存储库以供 Jenkins 完成其工作

在 Jenkins 中,如何将项目签出到特定目录中(使用 GIT)