Нет вердикта от моего Дженкинса до Герритуба

Я устроился на работу в Дженкинс, чтобы выносить вердикты отзывам GerritHub.io. Задание запускается правильно, когда изменение кода отправляется на проверку, а Дженкинс дает комментарии в GerritHub при запуске сборки и результатах сборки. Мое определение Gerrit Server в jenkins настроено так, чтобы выносить вердикты о неудачной сборке, нестабильной сборке и успешной сборке.

НО: голосование по вердикту не проводится.

ОБНОВЛЕНИЕ: вход в качестве пользователя Jenkins в графическом интерфейсе показал, что у пользователя Jenkins есть разрешения только на проверку кода: -1..1. Поэтому я изменил настройки своего сервера Gerrit в Jenkins, чтобы обеспечить только проверку кода. Теперь это работает, но только для «Проверки кода», а не для «Проверено». Это показывает, что ограничение находится в GerritHub.io и что его можно настроить там.


person Joachim Nilsson    schedule 27.07.2017    source источник


Ответы (1)


Следуйте документации на странице подключаемого модуля Jenkins относительно прав доступа, но вместо -Интерактивные пользователи, добавьте пользователя, которого использует ваш Jenkins. (Я предпочитаю, чтобы в моих обзорных вердиктах был отдельный пользователь с именем «Дженкинс»)

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

Права доступа для Code-Review вроде бы уже есть по умолчанию, но в любом случае добавьте оба и добавьте разрешение на чтение. Права доступа доступны на вкладке «Доступ», как обычно.

Я сделал для себя скрипт, чтобы упростить редактирование прав доступа. Я создал права доступа один раз и проверил файлы «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
person Joachim Nilsson    schedule 31.07.2017
comment
Есть ли другой способ, чем создать новую учетную запись GitHub и связать ее с GerritHub, чтобы создать пользователя Jenkins? Кроме того, ваш ответ выглядит так, будто вы напрямую меняете конфигурационный файл Gerrit. Пока я нашел способ изменить конфигурацию только через веб-интерфейс GerritHub. Есть что-то, что я пропустил? - person fap; 12.08.2017
comment
Насколько мне известно, нет анонимного входа в систему, поэтому для моих целей я хотел создать нового пользователя. Вы можете использовать существующий, но мне нравится разделять учетные записи, вердикт выглядит лучше с именем «Дженкинс» в качестве отправителя. - person Joachim Nilsson; 13.08.2017
comment
И да, я передаю файл конфигурации непосредственно в GerritHub. Таким образом, он доступен сразу. Делаю это из скрипта сейчас, чтобы я мог повторно использовать его для всех своих проектов. - person Joachim Nilsson; 13.08.2017