2013-08-23 80 views
1

我已經設置了Gerrit-Git-Jenkins組合。我爲Jenkis使用了以下插件。從Gerrit/Git填充Jenkins工作區

  • 格里特觸發
  • Git的客戶端插件
  • 詹金斯GIT插件

我運行一個虛擬詹金斯工作,這總是成功用於開發目的。我注意到,當我將更改推送到Gerrit時,這些文件不會顯示在Jenkins工作區中。

在Jenkins Git配置中設置的存儲庫URL是git://localhost/project我試過手動克隆它,git clone git://localhost/project獲取我期望的文件。

Jenkins克隆來填充其工作空間的存儲庫是什麼?

它克隆git://localhost/project。我已經通過運行git remote show origin作爲構建腳本,然後查看日誌輸出來測試了這一點。

Jenkins運行什麼命令來填充工作區,看起來它不是克隆HEAD?

+0

我注意到工作區中.git中有一個'FETCH_HEAD'文件。 'FETCH_HEAD'持有對正確存儲庫的引用。看起來Workspace並沒有對提取的存儲庫執行「checkout」操作。 – TheMeaningfulEngineer

回答

4

Jenkins執行以下操作來填充其工作空間。 (在<名稱>代表在詹金斯項目配置字段名稱):

git clone <Repository URL> 
git fetch <Refspec> 
git checkout <Branch Specifier> 

,其與在格里特其等待驗證文件填充在工作區的設置是:

Refspec: refs/changes/*:refs/changes/* 
Branches to build: $GERRIT_REFSPEC 

這來自克隆一切來自Gerrit的refs/changes/*,並從引用爲分支$GERRIT_REFSPEC的文件填充工作空間。 $GERRIT_REFSPEC對Gerrit收到的每一個新變化都不同,它看起來像這樣refs/changes/05/5/1

1

只是爲了記錄在案,結賬格里特審查要求(即特定的補丁集),配置按照詹金斯/哈德森作業3的配置選項:

  1. Repositories -> Repository URL格里特項目的git的網址
    (例如,http://gerrit.corp.com/the-project

  2. Repositories -> Refspec(高級GIT中設置):refs/changes/*:refs/changes/*

  3. Branches to be built -> Branch Specifier):refs/changes/XY/?? XY /?
    (例如,refs/changes/24/3124/8

艾倫的答案是正確的。這只是不夠明顯,這就是爲什麼我試圖用其他語言來闡述答案的原因。