簡體   English   中英

推動分支被解釋為推動主節點

[英]Pushing a branch interpreted as pushing master

環境:

  • Jenkings項目僅構建Git存儲庫的“ master”分支。
  • 一個帶有接收后掛鈎的Git存儲庫,用於通知Jenkins新更改(使用Git 1.7.10)。 盡管腳本告訴Jenkins有新的更改,但是當Jenkins掃描存儲庫時,如果更改不在“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM