在我们的项目中,我们有一个从远程主分支运行的詹金斯作业。开发人员经常从这个远程主服务器中重新定位,以将最新的更改获取到他们的本地副本中。我们想要的是避免当 jenkins 坏了(红色或黄色球)时这种变基。说明是“仅当 jenkins 是绿色时才重新设置基准”但是......人们很懒 :-)
那么,我们能否在 jenkins 作业中做一些事情,以便在执行失败时阻塞 git repo?
此致!
似乎您在合并到您的 git 存储库之前没有验证您的提交,而是在频繁地合并到 git 之后验证它们。
我认为除了从 git 存储库中删除所有用户的 ssh-keys 之外,我们无法禁用 git pull,这是不可行的。我们可以在 Jenkins 中有一个后期构建步骤,它可以操纵 Git 中的 authorized_keys 文件来阻止对 git repo 的访问。(我不确定它是否有效)
我们有一个相同的场景,每个构建+验证大约需要 2 个小时,我们不能真正为每个提交强制执行这个测试。但我们能够处理这种情况。
如果您使用的是 gerrit:
代替使用 Jenkins Gerrit-trigger 插件,我们可以拥有自己的脚本,它将轮询整个 gerrit 的更改,这些更改已获得所有批准并准备好合并并运行您的验证。一旦验证成功,该作业中的所有更改将自动合并(在 Gerrit 中提交)。有了这个,我们可以避免错误的提交被合并。
如果您不使用 gerrit:
我们可以有两个独立的分支
所有开发人员都会将他们的更改推送到开发分支,并且只有在验证成功时,我们才能验证开发分支并将更改推送到集成分支。