Правильная конфигурация для Jenkins GitHub Pull Request Builder вниз по течению
Я пытаюсь создать два задания Jenkins, которые используют плагин GitHub Pull Request Builder для выполнения нескольких проверок состояния, но у меня возникают проблемы с получением проверки состояния из моего нижестоящего задания, которое отображается в моем проекте GitHub.
Вот суммарный поток CI, который я хотел бы настроить:
- Для моего git-репозитория открывается запрос на получение, который запускает задание Upstream для запуска в Jenkins
- Апстрим сообщает о своем статусе на основе сборки и, если
SUCCESS
, должен вызывать работу Downstream через действие после сборки - Downstream работает и сообщает о своей собственной проверке состояния
Шаг 3, где у меня возникают проблемы. Downstream работает правильно, но не публикует статус. Статус недоступен даже в разделе " Ветви " настроек моего проекта GitHub. Я не уверен, как GHPRB выполняет первоначальное создание проверки статуса, но в Console Output есть ссылки на контекстный обмен сообщениями:
14:58:23 Started by upstream project "upstream" build number 209
14:58:23 originally caused by:
14:58:23 GitHub pull request #114 of commit f1ff2819a5308f7819275e732cf44a2cc2ec31dc, no merge conflicts.
14:58:23 [EnvInject] - Loading node environment variables.
14:58:23 Building on master in workspace /store/jenkins/jobs/downstream/workspace
14:58:23 > git rev-parse --is-inside-work-tree # timeout=10
14:58:23 Fetching changes from the remote Git repository
14:58:23 > git config remote.origin.url <removed for privacy> # timeout=10
14:58:23 Fetching upstream changes from <removed for privacy>
14:58:23 > git --version # timeout=10
14:58:23 > git -c core.askpass=true fetch --tags --progress <removed for privacy> +refs/pull/*:refs/remotes/origin/pr/*
14:58:24 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
14:58:24 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
14:58:24 Checking out Revision eac390c51a1b8b591bfe879421bd5fad0421a1ec (refs/remotes/origin/master)
14:58:24 > git config core.sparsecheckout # timeout=10
14:58:24 > git checkout -f eac390c51a1b8b591bfe879421bd5fad0421a1ec
14:58:24 First time build. Skipping changelog.
14:58:24 [build] $ /store/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1.8.2/bin/ant -DghprbStatusUrl= "-DghprbSUCCESSMessage=Packaging organization successfully cleaned" -DghprbStartedStatus=Undeploying -DghprbAddTestResults=false "-DghprbCommitStatusContext=Cleaning Packaging" "-DghprbERRORMessage=An error occurred during undeployment" -DghprbUpstreamStatus=true "-DghprbTriggeredStatus=Preparing destructive changes" "-DghprbFAILUREMessage=Packaging organization failed to clean properly" -DghprbShowMatrixStatus=false
Вот соответствующие разделы конфигурации для обоих заданий Jenkins:
Работа вверх по течению
Управление исходным кодом: Git
- Название:
origin
- Refspec:
+refs/pull/*:refs/remotes/origin/pr/*
- Спецификатор филиала:
${sha1}
Построить триггеры
- GitHub Pull Request Builder
- Используйте GitHub-хуки для запуска сборки
✔︎
- Отобразить ошибки сборки на последующих сборках?
✔︎
- Настройка триггера заполнена пользовательским контекстным обменом сообщениями
- Используйте GitHub-хуки для запуска сборки
Действия после сборки
- Построить другие проекты:
Downstream
Работа вниз по течению
Управление исходным кодом: Git
- Название:
origin
- Refspec:
+refs/pull/*:refs/remotes/origin/pr/*
- Спецификатор филиала:
*/master
Построить триггеры
- GitHub Pull Request Builder
- Настройка триггера заполнена пользовательским контекстным обменом сообщениями
Построить среду
- Установить статус фиксации GitHub с помощью пользовательского контекста и сообщения (необходимо настроить работу в восходящем направлении, используя триггер GHPRB)
✔︎
- Поля пользовательских контекстных сообщений отражают поля, перечисленные в разделе " Настройка триггера " (я сомневаюсь, что оба они обязательны, но ни один из них в настоящее время не работает)
Что мне не хватает? Следует отметить, что у меня не установлен плагин Jobs DSL, поэтому я не могу использовать расширение, предоставляемое GHPRB.
1 ответ
После долгих проб и ошибок этот комментарий пролил некоторый свет на мою проблему.
Суть моей проблемы заключалась в том, что Downstream не получал требуемые переменные среды, которые предоставляет GHPRB. а именно ghprbGhRepository
, ghprbPullId
, ghprbActualCommit
а также sha1
,
Правильные конфигурации для обоих заданий:
Работа вверх по течению
Управление исходным кодом: Git
- Название:
origin
- Refspec:
+refs/pull/*:refs/remotes/origin/pr/*
- Спецификатор филиала:
${sha1}
Построить триггеры
- GitHub Pull Request Builder
- Используйте GitHub-хуки для запуска сборки
✔︎
- Отобразить ошибки сборки на последующих сборках?
✔︎
- Настройка триггера заполнена пользовательским контекстным обменом сообщениями
- Используйте GitHub-хуки для запуска сборки
строить
- Триггер / вызов строится на других проектах
- Проекты для строительства:
Downstream
- Предопределенные параметры:
ghprbGhRepository=${ghprbGhRepository}
ghprbPullId=${ghprbPullId}
ghprbActualCommit=${ghprbActualCommit}
sha1=${sha1}
- Проекты для строительства:
Работа вниз по течению
Управление исходным кодом: Git
- Название:
origin
- Refspec:
+refs/pull/*:refs/remotes/origin/pr/*
- Спецификатор филиала:
${sha1}
Построить среду
- Установить статус фиксации GitHub с помощью пользовательского контекста и сообщения (необходимо настроить работу в восходящем направлении, используя триггер GHPRB)
✔︎