作业导入插件不导入文件夹
Job Import Plugin doesn’t import folder
我目前正在尝试将作业从 AWS 上的服务器 运行 导入到 GCP Kubernetes 上的新服务器 运行。
我已经在新服务器上设置了 Job Import Plugin 版本 3.4。
当我尝试导入工作时,它只有 1 个工作。
但是当我导入一个文件夹,其中包含作业和文件夹时,导入的文件夹里面什么也没有。
旧服务器:Jenkins 版本 2.127
新服务器:Jenkins 版本 2.289.2
有什么帮助吗?
该插件似乎未提供任何文档,无论是在 legacy wiki page, the Plugins page, or the GitHub repo. This 中都很好地提供了使用说明。
TL;DR :你必须分阶段进行;文件夹,然后是每个文件夹中的作业。递归到文件夹中效果不佳。
问题 :Jenkins 将 Folder 对象视为另一种作业类型,类似于 Freestyle Job 和 Pipeline Job(因此称为“新项目”介绍)。很明显,该插件无法直观地处理文件夹和文件夹内的作业。它也不向用户提供直接反馈(错误在jenkins.log)。
CONTEXT :使用 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, with job-import-plugin-3.4,folders-6.16.
假设您安装并配置了作业导入插件(左图),单击了作业导入插件按钮(或 ${JENKINS_URL}/job-import
(右图)):
您的目标结构和源结构为空:
JobInRoot
AFolder
AFolder/JobInFolder
失败结果:
如果您点击查询!,响应将是JobInRoot
和AFolder
Select 两者都会导入 JobInRoot
AND AFolder
,但不会导入其内容。那是因为它只是导入了两个作业项(自由式作业项和文件夹作业项);它不会递归地导入文件夹中的作业。
JobInRoot SUCCESS
AFolder SUCCESS
如果您勾选 [ X ] Search into folders
并单击 查询! 并且响应将是所有三个项目。 Select 对所有三个项目进行 导入!,结果是:
JobInRoot SUCCESS
AFolder SUCCESS
JobInFolder FAILED - ‘/’ is an unsafe character
变通解决方案:
- 如上所示,先导入文件夹
AFolder
。
再次 - 运行 Job Import 插件,但将 RemoteFolder 设置为 [
job/AFolder
],然后 Query! . 这是为了解决不安全的“/”字符问题和糟糕的文件夹插件处理问题。您现在将在 AFolder
. 中看到嵌套的作业
- 设置
Copy to folder [ AFolder ]
、selectJobInFolder
、导入!
JobInFolder SUCCESS
而这份工作实际上是在 AFolder/JobInFolder
3a.将嵌套文件夹(eg:L1Folder/L2Folder/L3Folder/jobInFolder3)处理成嵌套文件夹,再次迭代,但每一层都需要插入“job/”前缀,即:RemoteFolder [job/L1Folder/job/L2Folder/job/L3Folder ...
]。不要在 rooturl 前面添加,仅来自“job/”:合格的 itemByFullName-ish。
3b。如果你想复制嵌套作业到根文件夹,你必须设置Copy to folder [ / ]
,否则你会得到:
JobInFolder FAILED null
可能存在更多细微差别,但这种方法应该有助于迁移大多数项目。尚未测试选项 [ ] 安装所需的插件或 [ ] 覆盖现有作业。
至少在我们的 Cloudbees Jenkins 服务器上,“远程文件夹”需要采用格式“job/AWS%20Jobs/”,没有前导斜杠、作业、尾随斜杠和编码,例如空格是 %20。然后点击查询。
然后在职位选择页面上,您可以将它们放入现有文件夹中。而且由于 Jenkins 非常不一致,这里文件夹名称的格式应该是“AWS Jobs”而不是上面的格式。
我目前正在尝试将作业从 AWS 上的服务器 运行 导入到 GCP Kubernetes 上的新服务器 运行。
我已经在新服务器上设置了 Job Import Plugin 版本 3.4。
当我尝试导入工作时,它只有 1 个工作。
但是当我导入一个文件夹,其中包含作业和文件夹时,导入的文件夹里面什么也没有。
旧服务器:Jenkins 版本 2.127
新服务器:Jenkins 版本 2.289.2
有什么帮助吗?
该插件似乎未提供任何文档,无论是在 legacy wiki page, the Plugins page, or the GitHub repo. This
TL;DR :你必须分阶段进行;文件夹,然后是每个文件夹中的作业。递归到文件夹中效果不佳。
问题 :Jenkins 将 Folder 对象视为另一种作业类型,类似于 Freestyle Job 和 Pipeline Job(因此称为“新项目”介绍)。很明显,该插件无法直观地处理文件夹和文件夹内的作业。它也不向用户提供直接反馈(错误在jenkins.log)。
CONTEXT :使用 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, with job-import-plugin-3.4,folders-6.16.
假设您安装并配置了作业导入插件(左图),单击了作业导入插件按钮(或 ${JENKINS_URL}/job-import
(右图)):
您的目标结构和源结构为空:
JobInRoot
AFolder
AFolder/JobInFolder
失败结果:
如果您点击查询!,响应将是JobInRoot
和AFolder
Select 两者都会导入 JobInRoot
AND AFolder
,但不会导入其内容。那是因为它只是导入了两个作业项(自由式作业项和文件夹作业项);它不会递归地导入文件夹中的作业。
JobInRoot SUCCESS
AFolder SUCCESS
如果您勾选 [ X ] Search into folders
并单击 查询! 并且响应将是所有三个项目。 Select 对所有三个项目进行 导入!,结果是:
JobInRoot SUCCESS
AFolder SUCCESS
JobInFolder FAILED - ‘/’ is an unsafe character
变通解决方案:
- 如上所示,先导入文件夹
AFolder
。
再次 - 运行 Job Import 插件,但将 RemoteFolder 设置为 [
job/AFolder
],然后 Query! . 这是为了解决不安全的“/”字符问题和糟糕的文件夹插件处理问题。您现在将在AFolder
. 中看到嵌套的作业
- 设置
Copy to folder [ AFolder ]
、selectJobInFolder
、导入!
JobInFolder SUCCESS
而这份工作实际上是在 AFolder/JobInFolder
3a.将嵌套文件夹(eg:L1Folder/L2Folder/L3Folder/jobInFolder3)处理成嵌套文件夹,再次迭代,但每一层都需要插入“job/”前缀,即:RemoteFolder [job/L1Folder/job/L2Folder/job/L3Folder ...
]。不要在 rooturl 前面添加,仅来自“job/”:合格的 itemByFullName-ish。
3b。如果你想复制嵌套作业到根文件夹,你必须设置Copy to folder [ / ]
,否则你会得到:
JobInFolder FAILED null
可能存在更多细微差别,但这种方法应该有助于迁移大多数项目。尚未测试选项 [ ] 安装所需的插件或 [ ] 覆盖现有作业。
至少在我们的 Cloudbees Jenkins 服务器上,“远程文件夹”需要采用格式“job/AWS%20Jobs/”,没有前导斜杠、作业、尾随斜杠和编码,例如空格是 %20。然后点击查询。
然后在职位选择页面上,您可以将它们放入现有文件夹中。而且由于 Jenkins 非常不一致,这里文件夹名称的格式应该是“AWS Jobs”而不是上面的格式。