我在GitHub中配置了一个post-receive挂钩,按照here所述命中我的存储库的Jenkins notifyCommit
URL。
任何分支上的任何提交都会触发该钩子,该钩子会发送轮询事件。精细。对功能分支进行更改,Jenkins将进行轮询,并注意到在作业的已配置分支(master)上构建没有新内容,对吧?
但显然,不是,因为即使Jenkins工作投票日志说:
[poll] Last Built Revision: Revision abc123 (origin/master)
推送到新分支origin/not-master
,触发一个构建,其日志显示为:
Checking out Revision abc123 (origin/master)
因此,当master中没有任何变化时,它会为master启动一个新的构建。这可能是如何配置作业的存储库和分支的问题?或者这只是预定的民意调查的工作方式?
答案 0 :(得分:1)
问题是构建是由分支参数化的。我错误地认为通知只会构建由master的默认参数值指定的分支,或者它将构建通知所针对的构建。
通过将作业的分支修复为master,构建触发器按预期工作。
答案 1 :(得分:0)
由于我不知道的原因,Jenkins似乎跟踪它已经看到的提交并在工作空间中的某处构建。如果您正在使用例如Workspace Cleanup plugin要在构建的开始或结束时删除作业工作区,Jenkins将失去对其构建内容的跟踪,并将启动新构建以恢复同步。
停止这样做。如果您需要清理工作区,请使用Git SCM“高级行为”下拉列表并选择“结账后清理”。这将使Jenkins运行“git clean”,如果作业使用git,这是一种快速安全的清理工作区的方法。