且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

作业导入插件不导入文件夹

更新时间:2022-12-08 13:11:15

该插件似乎没有提供文档,无论是在legacy wiki pagePlugins pageGitHub repo中。此answer from @valdeci在提供使用说明方面做得很好。

tl;dr:您必须分阶段进行;首先是文件夹,然后是每个文件夹中的作业。"递归到文件夹"无法正常工作。

问题:Jenkins将文件夹对象视为另一种作业类型,类似于Freestyle Job和Pipeline Job(因此出现了&Quot;New Item&Quot;演示文稿)。很明显,该插件不能直观地处理文件夹和文件夹内的作业。它也不向用户提供直接反馈(错误在jenkins.log中)。

上下文:只要同时选择文件夹和嵌套作业,使用Jenkins 1.121.3加上job-import-plugin-3.3,Folders-6.5.1就可以正常工作。

插件有number of open issues,包括:
Jenkins-64121:Jenkins ImportPlugin-错误‘/’不安全字符 和53902(仅复制文件夹,但不复制文件夹内存在的作业)。我不知道行为何时改变,但可以导入作业。

配置/设置

以下内容已验证jenkins-2.289.3,job-import-plugin-3.4,文件夹-6.16。

假设您安装、配置了作业导入插件(左图),单击了作业导入插件按钮(或${JENKINS_URL}/job-import(右图)):

您有空的目标结构和源结构:

JobInRoot
AFolder
AFolder/JobInFolder

失败结果

如果单击查询!,则响应将为JobInRootAFolder
选择两者,它将导入JobInRootAFolder,但不会导入其内容。这是因为它只导入了两个作业项(Freestyle作业项和文件夹作业项);它不会递归导入文件夹内的作业。

JobInRoot成功
AF文件夹成功

如果勾选[ X ] Search into folders并单击查询!,则响应将全部为这三个项目。选择所有三个项目并导入!,结果为:

JobInRoot成功
AFFolder成功
JobInFolder失败-‘/’是不安全字符

解决方案

  1. 如上所示,首先导入文件夹AFolder
  2. 再次运行作业导入插件,但将RemoteFolder设置为[job/AFolder],然后设置查询!这是为了解决不安全&q;/&q;字符问题和文件夹插件处理不当的问题。现在您将在AFolder中看到嵌套作业。
  3. 设置Copy to folder [ AFolder ],选择JobInFolder导入!

JobInFolder成功

并且作业实际位于AFolder/JobInFolder

3a。要将嵌套文件夹(例如:L1Folder/L2Folder/L3Folder/jobInFolder3)处理到嵌套文件夹中,请再次迭代,但每个级别都需要插入"job/"前缀,即:RemoteFolder[job/L1Folder/job/L2Folder/job/L3Folder ...]。不要预先考虑rooturl,仅从"job/":限定的itemByFullName-ish。

3b。如果要将嵌套作业复制到根文件夹,则必须设置Copy to folder [ / ],否则将收到:

JobInFolder失败NULL

可能有更多细微差别,但此方法应该有助于迁移大多数项目。尚未测试选项[]安装所需的插件或[]覆盖现有作业。