在我们的项目中,我们有一个从远程主分支运行的jenkins作业。开发人员经常会从这位远程主服务器重新获取最新的更改到本地副本中。 我们想要的是当jenkins破裂时(红色或黄色的球)避免这种重新镶嵌。说明是“只有当jenkins是绿色的时候才需要rebase”,但是......人们很懒:-)是否可以阻止git pull/fetches?
那么,我们可以在jenkins作业中做些什么,以便在执行失败时阻止git repo?
此致敬礼!
在我们的项目中,我们有一个从远程主分支运行的jenkins作业。开发人员经常会从这位远程主服务器重新获取最新的更改到本地副本中。 我们想要的是当jenkins破裂时(红色或黄色的球)避免这种重新镶嵌。说明是“只有当jenkins是绿色的时候才需要rebase”,但是......人们很懒:-)是否可以阻止git pull/fetches?
那么,我们可以在jenkins作业中做些什么,以便在执行失败时阻止git repo?
此致敬礼!
看来你没有验证你的提交在合并到你的git仓库之前,而是在频繁的时间间隔合并到git后验证它们。
我认为除了从git存储库中删除所有用户的ssh-key,我们不能禁用git pull,这是不可行的。 我们可以在Jenkins中创建一个后期构建步骤,它可以处理Git中的authorized_keys文件以阻止访问git repo。 (我不知道它是否有效)
我们有一个相同的场景,每个构建+验证需要2个小时左右,我们无法真正为每个提交执行此测试。但我们能够处理这种情况。
如果您正在使用格里特:
而不是使用詹金斯格里特触发插件,我们可以有我们自己的脚本,它会轮询整个格里特对于具有所有批准,并准备合并和运行验证的变化。验证成功后,该作业中的所有更改将自动合并(在Gerrit中提交)。有了这个,我们可以避免错误的提交被合并。
如果你不使用格里特:
我们可以有两个单独的分支
所有的开发人员将他们的变化推到开发分支并且在频繁的时间间隔内,我们可以验证开发分支并仅在验证成功时才将更改推送到集成分支。
Jenkins是否也在管理GIT存储库? git repo和Jenkins在同一台机器上运行吗?也许看看使用Gerrit来管理您的共享GIT回购。 Jenkins的Gerrit插件可用于自动验证每个代码提交。这将是一个更好的机制来实现您所需的工作流程.http://code.google.com/p/gerrit/ –
不,Jenkins与Gerrit/Git不在同一台机器上。我知道你以这种方式使用Gerrit的意思,但Jenkins的工作大约需要2个小时(而且需要更长的时间),所以我们无法在每次推送时启动它。 –