环境:
问题
开发人员在10天前将提交推送到远程主服务器。 Jenkins项目是在5天前成立的。昨天,第二个开发人员撤回了更改,创建了一个新分支并将其推回远程。也就是说,主人没有改变。然而,Jenkins项目开始了。看看Jenkins发现的变化,这是10天前第一个开发人员最后一次提交触发构建的。
答案 0 :(得分:2)
我意识到这个问题还没有得到解答..这就是我当时修复它的方法..
<强>原因强>
Jenkins的构建是从我们的Git repo的“post-receive”钩子脚本触发的:
#!/bin/bash
while read oldrev newrev refname
do
true
done
curl http://jenkins/git/notifyCommit?url=ssh://git@devserver/repos/particualr_repo.git
可以看出,脚本读取stdin然后忽略它。因此,当从任何分支推送提交时,构建就会启动。但是,由于我们的构建项目被配置为构建master,并且自上次提交到master之后是10天之前,它将其注册为导致构建的更改。
解决方案(仅在推送母版时排队构建)
将钩子脚本更改为仅构建仅按下master。
#!/bin/bash
if ! [ -t 0 ]; then
read -a ref
fi
IFS='/' read -ra REF <<< "${ref[2]}"
branch="${REF[2]}"
if [ "master" == "$branch" ]; then
curl http://jenkins/git/notifyCommit?url=ssh://git@devserver/repos/particualr_repo.git
fi