10

我正在尝试让 Jenkins 的多分支管道工作以与分支类似的方式构建标签。在 Jenkins 2.73 中(不确定何时添加了该功能),可以将 Multibranch 项目配置为从源存储库中检索分支和标签。最初我认为这对我的需求来说是完美的(我的 Jenkinsfile 现在可以从 Jenkins 的同一个地方构建开发或生产构建)。 配置了标签发现的多分支作业

我的构建过程本身已经启动并使用脚本管道非常愉快地运行,但是我的问题是,虽然分支作业完美地触发了我的触发器(每周 Cron),因此可以使用 Git 插件的 notifyOnCommit 功能触发(允许我每周清理构建,但通过 repo scan webhook 也可以在提交到 repo 时构建),标签构建不会。

有没有其他人遇到过这个?如果是这样,你有没有找到任何合理的方法来解决它?

我的脚本管道中的相关片段(我尝试了有无overrideIndexTriggers设置):

properties(
  [
    pipelineTriggers(
      triggers: [
        cron('H 02 * * 7')
      ]
    ),
    overrideIndexTriggers(true)
  ]
)

从多分支管道生成的分支作业轮询配置似乎很好多分支管道 从标签生成的作业没有收到相同的配置,奇怪的是......

多分支管道扫描日志中有一条注释表明标签永远不会被自动调度:

Processed 8 branches
Checking tags...
  Checking tag testing
      ‘Jenkinsfile’ found
    Met criteria
No automatic builds for testing
Processed 1 tags
[Mon Oct 23 09:55:00 UTC 2017] Finished branch indexing. Indexing took 8.1 sec
Finished: SUCCESS

我的项目是基于 docker 的,我想每周运行一次发布版本,以引入任何基础映像更改等。

有没有人知道我可以做些什么来让多分支项目安排标签构建?

4

1 回答 1

9

根据JENKINS-47496,不会自动触发已发现标签的构建似乎是设计使然。Stephen Connolly 为您可能会做的事情提供了解释和建议:

Stephen Connolly 添加了评论 - 6 天前

默认情况下不构建标签(因为否则在签出存储库时您可能会遇到构建风暴),更糟糕的是,内置标签的顺序是不可预测的......并且您可能有一个 Jenkinsfile,当标签被部署到生产环境时建成。

分支 api 中有一个名为 BranchBuildStrategy 的扩展点,如果实施,它将允许决定是否构建标签。

有关如何创建这样的扩展插件的起点,请参阅https://github.com/jenkinsci/github-branch-source-plugin/pull/158#issuecomment-332773194 ...我相信在https上有一些工作://github.com/AngryBytes/jenkins-build-everything-strategy-plugin

于 2017-10-30T00:49:25.450 回答