6

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

将作业添加到新创建的视图。

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

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

谢谢你的帮助。

4

3 回答 3

7

您不能将作业添加到不受作业 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 管理视图(但您应该这样做),您可以尝试使用基于过滤器的视图配置。例如,包括名称与正则表达式匹配的所有作业。或者您可以使用查看作业过滤器插件来创建更复杂的过滤器。

于 2015-08-27T17:54:21.773 回答
2

感谢 daspilker,根据您提供的详细信息,我找到了一个可以接受的解决方案。

-> 视图过滤器

要求:查看作业过滤器插件

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

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

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

目前,这工作正常。我在手动管理的视图中创建了 DSL 作业。

但正如 daspilker 所说:

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

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

在此处输入图像描述

于 2015-08-28T07:15:01.090 回答
0

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

解决方法:

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

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

于 2017-10-19T11:00:16.597 回答