2017-07-27 64 views
1

我已經在Jenkins設置了一份工作來判定GerritHub.io的評論。 當代碼更改被推送審閱時,作業被正確觸發,並且Jenkins在GerritHub在構建開始和構建結果時給出註釋。在jenkins中我的Gerrit服務器定義被配置爲對構建失敗,構建不穩定和構建成功進行判定。沒有從我的Jenkins到Gerrithub的判決書

但是:沒有給出判決票。

更新:在GUI中以Jenkins用戶身份登錄顯示Jenkins用戶只具有執行代碼審查的權限:-1..1。所以我將Jenkins中的Gerrit服務器設置更改爲僅提供Code Review。現在它可以工作,但僅適用於「代碼審查」,而不適用於「已驗證」。它表明限制在GerritHub.io中,並且應該可以在那裏進行配置。

回答

1

請按照有關訪問權限的the Jenkins plugin page的文檔,但不是非互動用戶,而是添加Jenkins正在使用的用戶。 (我喜歡在我的評審裁決名爲「詹金斯的一個單獨的用戶)

[access "refs/heads/*"] 
label-Code-Review = -1..+1 group user/<Jenkins User Id> 
label-Verified = -1..+1 group user/<Jenkins User Id> 

的代碼審查的訪問權限已似乎是在默認地方,但無論在任何情況下添加,並添加讀取權限。正常情況下,Access選項卡中提供訪問權限。

我爲自己製作了一個腳本來簡化編輯訪問權限。我創建了一次訪問權限,並在文件'groups'和'project.config'中檢入了github回購。這裏的腳本:

#!/bin/bash 
usage(){ 
    echo "Parameter 1: userid (GitHub & GerritHub)" 
    echo "Parameter 2: repository name" 
    exit 1 
} 

printline(){ 
    echo -e "${GRAY}====================${BLACK}" 
} 

check(){ 
    if [[ $? -ne 0 ]]; then 
    echo -e "${RED}Failed: ${1}${BLACK}" 
    echo $2 
    rm -rf $tmp 
    exit 1 
    else 
    echo -e "$1 - ${GREEN}DONE${BLACK}" 
    printline 
    fi 
} 

if [[ $# -ne 2 ]]; then 
    usage 
fi 

RED='\033[0;31m' 
GREEN='\033[0;32m' 
GRAY='\033[1;30m' 
BLACK='\033[0m' # No Color 
userid=$1 
repo=$2 
organization="FILL IN HERE" 
template="FILL IN HERE" 

if [[ -z "$userid" ]]; then 
    usage 
fi 

if [[ -z "$repo" ]]; then 
    usage 
fi 

tmp=$(mktemp -d) 

[[ -f ~/.ssh/id_rsa ]] && [[ -f ~/.ssh/id_rsa.pub ]] 
check "Check key pair in ~/.ssh/" "" 

cd $tmp 

git clone [email protected]:${organization}/${repo}.git 
check "Clone $repo to $tmp " "(project created in GitHub? https://github.com/organizations/${organization}/repositories/new)" 

cd $repo 

git remote add GerritHub ssh://${userid}@review.gerrithub.io:29418/${organization}/${repo} 
check "Add GerritHub as remote " "(is the project imported to GerritHub? https://review.gerrithub.io/plugins/github-plugin/static/repositories.html)" 

git fetch GerritHub refs/meta/config:refs/remotes/GerritHub/meta/config 
check "Get current access config" "(is the project imported to GerritHub? https://review.gerrithub.io/plugins/github-plugin/static/repositories.html)" 

git checkout GerritHub/meta/config 
check "Check out meta/config from GerritHub" 

git fetch ssh://[email protected]/${organization}/${template} master && git cherry-pick FETCH_HEAD --strategy-option theirs 
check "Get access template from GitHub" "" 

git push -f GerritHub HEAD:refs/meta/config 
check "Push new access rights to GerritHub" "" 

rm -rf $tmp 
+0

是否有另一種方式比創建一個新的GitHub帳戶,並將其鏈接到GerritHub創建Jenkins用戶? 此外,您的答案會使您看起來像直接更改Gerrit配置文件。到目前爲止,我只找到了一種通過GerritHub Web UI更改配置的方法。有什麼我錯過了嗎? – fap

+0

據我所知,沒有匿名登錄,所以爲了我的目的,我想創建一個新用戶。您可以使用現有帳戶,但我喜歡將帳戶分開,結果以「Jenkins」作爲發件人的名稱更好。 –

+0

是的,我直接向GerritHub提交配置文件。這樣它可以立即訪問。現在從腳本執行它,以便我可以在我的所有項目中重複使用它。 –

相關問題