2013-01-24 27 views
0

环境的一个分支:推解读为推动主

  • Jenkings项目只能建一个Git仓库的“主人”分支。
  • 一个Git仓库,包含post-receive hook来通知Jenkins新的更改(使用Git 1.7.10)。虽然脚本告诉Jenkins有新的改变,但是当Jenkins扫描版本库时,如果更改不在“主”分支中,它将不会触发构建。

问题

显影剂推提交到远程主10天前。 Jenkins项目于5天前成立。昨天,第二个开发人员提出了更改,创建了一个新分支并将其推回到远程。也就是说,主人没有改变。然而,詹金斯项目已经开始了。看着詹金斯发现的变化,这是10天前第一个开发者最后一次触发构建的提交。

+2

什么是你的问题?我知道你可能看起来很明显,但它不适合我。 –

+0

由于某些原因,我的文章的最后部分丢失了。对于那个很抱歉。我想知道为什么这个构建项目被启动了。因为第一个开发人员在Jenkins项目建立之前最后一次提交到master,而第二个开发人员提交的提交不在master中。 –

+0

任何人,请吗? –

回答

2

我意识到这个问题没有得到回答。这是我如何固定它当年..

原因

詹金斯的建立从我们的Git回购的‘后收到’钩子被触发脚本:

#!/bin/bash 
while read oldrev newrev refname 
do 
    true 
done 

curl http://jenkins/git/notifyCommit?url=ssh://[email protected]/repos/particualr_repo.git 

如可以看出,该脚本读取标准输入,然后将其忽略。因此,当从任何分支推送提交时,构建都会启动。但是由于我们的构建项目被配置为构建主版本,并且自从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://[email protected]/repos/particualr_repo.git 
fi