[英]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.