[英]Pushing a branch interpreted as pushing master
环境:
问题
10天前,开发人员将提交提交到远程主服务器。 Jenkins项目是5天前建立的。 昨天,第二位开发人员撤消了更改,创建了一个新分支并将其推回远程。 即,母版中的任何内容均未更改。 但是,Jenkins项目启动了。查看Jenkins检测到的更改,这是10天前第一位开发人员所做的最后一次提交触发了构建。
我意识到这个问题尚未得到解决。.这就是我当时修复它的方式..
原因
Jenkins的构建是从我们的Git存储库的“ 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天之前,所以它将其注册为导致构建的更改。
解决方案(仅在按下主服务器时才排队构建)
更改挂钩脚本以仅构建主推送。
#!/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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.