重试由 git 推送到任意分支触发的 Jenkins 构建

Retry Jenkins build triggered by git push to arbitrary branch

我正在尝试添加一些非常基本的功能,这些功能存在于所有其他现代 ci 产品中,但不幸的是,这在 Jenkins 领域似乎是一个完全陌生的概念。

我连接了 github 插件,git 插件设置为构建 "origin/master" 的 "inverse",以便推送任何 b运行ch except master 触发构建。

问题是,如果存在不稳定的测试并且构建失败,则无法在 jenkins 中重新启动它。我添加了 Naginator 插件,但它重建了 运行 的最后一个 b运行ch,而不是您单击 "retry" 的构建的 b运行ch。使用 Naginator 插件,我似乎需要 git b运行ch 或 sha 作为构建的真实参数。但是,当构建被触发时,我找不到将 git b运行ch 设置为构建参数的方法。

我唯一能想到的就是将它分成两个 link 到同一个 git 回购的构建,并让第二个成为第一个触发的参数化构建GIT_COMMIT 值作为参数。然后,用 Naginator 重试第二个应该在同一个 SHA 上重试。但这不是一个好的解决方案,必须为我的每个构建配置 2 个构建,这很糟糕。

有谁知道完成这个的好方法吗?我希望我只是遗漏了一些简单的东西。

不幸的是,我不熟悉这个确切的设置,但是 Git plugin documentation 部分 来自存储库的推送通知 提到了触发器 url, <commit ID 是可选的。如果设置,它将立即触发构建,而不轮询更改

如果某个插件中有一个内置的“按钮”可以从 jenkins 内部手动发出这个 UI 我不知道,如果没有,那可能是一个很好的功能请求。

因此,如果确实没有可行的简单选项,作为一种解决方法,您可以自己编写一些脚本,为给定的分支 + 提交 ID 构建和调用 url。

Trigger url format, as found in Git Plugin docs:

curl http://yourserver/git/notifyCommit?url=<URL of the Git repository>&branches=branch1[,branch2]*][&sha1=<commit ID>]