Jenkins DSL插件:如何在现有的jenkins视图中创建作业?

时间:2015-08-27 16:41:05

标签: groovy jenkins jenkins-job-dsl

我发现了以下有关创建作业和使用DSL插件添加到新创建的视图的问题。

Adding job to newly created view.

如何使用DSL插件将创建的作业添加到现有视图?我在文档中找不到任何提示。也许很明显我无法看到解决方案?

虽然我读过,如果视图已经存在,创建视图将导致重新创建。对于这种观点下的现有项目意味着什么?

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

您无法将作业添加到不受作业DSL管理的视图。但DSL管理的视图可以包含不由DSL管理的作业。

例如,您可以手动管理名为project-a的作业,并使用由DSL管理的名为project-b的作业。由DSL管理的视图可以包含两个作业。

job('project-b') {
}

listView('project-view') {
  jobs {
    name('project-a')
    name('project-b')
  }
}

无法使用Jenkins API将作业从DSL脚本添加到视图中。作业必须存在才能添加到视图中。但是,当执行脚本时,不会立即创建作业。所有DSL项目都是在处理完脚本后创建的。

如果您不希望使用DSL管理视图(但您应该),则可以尝试使用基于过滤器的视图配置。例如。包括名称与正则表达式匹配的所有作业。或者您可以使用View Job Filters Plugin创建更复杂的过滤器。

答案 1 :(得分:2)

感谢daspilker,我提供了一个可接受的解决方案。

- >视图过滤器

要求:View Job Filter PLugin

由于DSL创建的作业无法添加到非DSL创建的视图中,因此我设置了两个视图过滤器。

  • 一个正则表达式视图过滤器,用于从默认视图中排除DSL创建的作业(如果您不创建DSL视图并将作业添加到其中,则会创建作业) - 选择默认视图 - >编辑视图 - >添加作业过滤器 - > regexpJobFilter

  • 视图上的一个regexp视图过滤器,您要在其中收集DSL创建的作业。

目前,这很好用。我在手动管理的视图中创建了DSL作业。

但正如daspilker所说:

  

如果您不希望使用DSL管理视图(但您应该

也许经验表明,我必须切换到DSL托管视图。

enter image description here

答案 2 :(得分:0)

我刚刚找到了解决这个问题的一个非常简单的方法 - 尽管我们应该记住,@ daspilker的答案显示了管理作业和视图的正确方法。只是对我来说这太复杂了(或者太懒了)。

解决方法:

  • 删除DSL生成的作业
  • 从DSL
  • 复制(或记住)生成的作业的确切名称
  • 转到您希望新作业位于
  • 的视图中
  • 使用相同的名称创建一个新的空作业,作为DSL中新生成的作业。
  • 在保存新的空作业时检查添加到当前视图
  • 运行DSL脚本,它将使用正确的内容更新现有(空)作业,同时将其保留在所需的视图中。

我刚刚来到这个解决方案,同时记住我曾经通过运行具有相同目标名称的DSL作业从视图中删除(覆盖)现有作业,但至少它保留在原始视图中:)