Jenkins DSL 插件:如何在现有的 jenkins 视图中创建作业?
Jenkins DSL Plugin: How to create a job in an existing jenkins View?
我发现了以下关于使用 DSL 插件创建工作和添加到新创建的视图的问题。
Adding job to newly created view.
如何使用 DSL 插件将创建的作业添加到现有视图?我在文档中找不到任何提示。也许太明显了,我看不到解决方案?
虽然我读到,如果视图已经存在,创建视图将导致重新创建。对于此视图下的现有项目,这意味着什么?
感谢您的帮助。
您不能将作业添加到不受作业 DSL 管理的视图。但是由 DSL 管理的视图可以包含不由 DSL 管理的作业。
例如,您可以有一个名为 project-a
的作业,它是手动管理的,还有一个名为 project-b
的作业,它是由 DSL 管理的。由 DSL 管理的视图可以包含这两个作业。
job('project-b') {
}
listView('project-view') {
jobs {
name('project-a')
name('project-b')
}
}
无法使用 Jenkins API 从 DSL 脚本向视图添加作业。作业必须存在才能添加到视图中。但是当脚本被执行时,作业并没有立即创建。所有 DSL 项目都是在脚本处理后创建的。
如果您不想使用 DSL 管理视图(但您应该这样做),您可以尝试使用基于过滤器的视图配置。例如。包括名称与正则表达式匹配的所有作业。或者您可以使用 View Job Filters Plugin 创建更复杂的过滤器。
感谢 daspilker,根据你提供的详细信息,我找到了一个可接受的解决方案。
-> 视图过滤器
由于无法将 DSL 创建的作业添加到非 DSL 创建的视图中,因此我设置了两个视图过滤器。
一个正则表达式视图过滤器,用于从默认视图中排除 DSL 创建的作业(如果您不创建 DSL 视图并将作业添加到其中,则会在其中创建作业)- select 默认视图->编辑视图->添加作业过滤器->regexpJobFilter
视图上的一个正则表达式视图过滤器,您要在其中收集 DSL 创建的作业。
目前,这工作正常。我在手动管理的视图中创建了 DSL 作业。
但正如 daspilker 所说:
If you do not want the manage the view with the DSL (but you should)
也许经验表明,我必须切换到 DSL 托管视图。
我刚刚找到了一个非常简单的解决方法来解决这个问题——尽管我们应该记住@daspilker 的回答显示了管理作业和视图的正确方法。只是当时对我来说太复杂了(或者太懒了)。
解决方法:
- 删除由您的 DSL 生成的作业
- 从 DSL
复制(或记住)生成的作业的 确切 名称
- 转到您希望新作业所在的视图
- 创建一个新的空作业,其名称与从 DSL 生成的新作业相同。
- 在保存新的空作业时选中添加到当前视图
- 运行 DSL 脚本,它将使用正确的内容更新您现有的(空的)作业,同时将其保留在所需的视图中。
我刚刚想到这个解决方案,同时记得我曾经通过 运行 具有相同目标名称的 DSL 作业从视图中删除(覆盖)现有作业,但至少它保留在原始位置查看 :)
我发现了以下关于使用 DSL 插件创建工作和添加到新创建的视图的问题。
Adding job to newly created view.
如何使用 DSL 插件将创建的作业添加到现有视图?我在文档中找不到任何提示。也许太明显了,我看不到解决方案?
虽然我读到,如果视图已经存在,创建视图将导致重新创建。对于此视图下的现有项目,这意味着什么?
感谢您的帮助。
您不能将作业添加到不受作业 DSL 管理的视图。但是由 DSL 管理的视图可以包含不由 DSL 管理的作业。
例如,您可以有一个名为 project-a
的作业,它是手动管理的,还有一个名为 project-b
的作业,它是由 DSL 管理的。由 DSL 管理的视图可以包含这两个作业。
job('project-b') {
}
listView('project-view') {
jobs {
name('project-a')
name('project-b')
}
}
无法使用 Jenkins API 从 DSL 脚本向视图添加作业。作业必须存在才能添加到视图中。但是当脚本被执行时,作业并没有立即创建。所有 DSL 项目都是在脚本处理后创建的。
如果您不想使用 DSL 管理视图(但您应该这样做),您可以尝试使用基于过滤器的视图配置。例如。包括名称与正则表达式匹配的所有作业。或者您可以使用 View Job Filters Plugin 创建更复杂的过滤器。
感谢 daspilker,根据你提供的详细信息,我找到了一个可接受的解决方案。
-> 视图过滤器
由于无法将 DSL 创建的作业添加到非 DSL 创建的视图中,因此我设置了两个视图过滤器。
一个正则表达式视图过滤器,用于从默认视图中排除 DSL 创建的作业(如果您不创建 DSL 视图并将作业添加到其中,则会在其中创建作业)- select 默认视图->编辑视图->添加作业过滤器->regexpJobFilter
视图上的一个正则表达式视图过滤器,您要在其中收集 DSL 创建的作业。
目前,这工作正常。我在手动管理的视图中创建了 DSL 作业。
但正如 daspilker 所说:
If you do not want the manage the view with the DSL (but you should)
也许经验表明,我必须切换到 DSL 托管视图。
我刚刚找到了一个非常简单的解决方法来解决这个问题——尽管我们应该记住@daspilker 的回答显示了管理作业和视图的正确方法。只是当时对我来说太复杂了(或者太懒了)。
解决方法:
- 删除由您的 DSL 生成的作业
- 从 DSL 复制(或记住)生成的作业的 确切 名称
- 转到您希望新作业所在的视图
- 创建一个新的空作业,其名称与从 DSL 生成的新作业相同。
- 在保存新的空作业时选中添加到当前视图
- 运行 DSL 脚本,它将使用正确的内容更新您现有的(空的)作业,同时将其保留在所需的视图中。
我刚刚想到这个解决方案,同时记得我曾经通过 运行 具有相同目标名称的 DSL 作业从视图中删除(覆盖)现有作业,但至少它保留在原始位置查看 :)