Правильная настройка для Jenkins GitHub Pull Request Builder вниз по течению

Я пытаюсь создать два задания Jenkins, которые используют GitHub Pull Request Builder для того, чтобы для запуска нескольких проверок состояния, но у меня возникли проблемы с получением проверки статуса из моей последующей работы, чтобы она появилась в моем проекте GitHub.

Здесь обобщенный поток CI, который я хотел бы настроить:

  • В моем репозитории git открывается запрос на перенос, который запускает задание Upstream для запуска в Jenkins
  • Upstream сообщает о своем статусе на основе сборки и, если SUCCESS, следует вызывать Downstream задание после сборки
  • Downstream запускает и сообщает свою собственную проверку статуса

Шаг 3 - это то, где у меня возникают проблемы. Вниз работает правильно, но он не публикует статус. Статус даже не доступен в разделе Филиалы моих настроек проекта GitHub. Я не уверен, как GHPRB выполняет первоначальное создание проверки состояния, но есть ссылки на контекстный обмен сообщениями на выходе консоли:

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:


Upstream Job

Управление исходным кодом: Git

  • Имя: origin
  • Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • Спецификатор отрасли: ${sha1}

Сборка триггеров

  • GitHub Pull Request Builder
    • Используйте github hooks для запуска сборки ✔︎
    • Отобразить ошибки сборки в строках ниже по потоку? ✔︎
    • Настройка триггера заполняется настраиваемыми контекстными сообщениями

Действия после сборки

  • Постройте другие проекты: Downstream

Работа в нисходящем направлении

Управление исходным кодом: Git

  • Имя: origin
  • Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • Спецификатор отрасли: */master

Сборка триггеров

  • GitHub Pull Request Builder
    • Настройка триггера заполняется настраиваемыми контекстными сообщениями

Среда сборки

  • Установить статус фиксации GitHub с настраиваемым контекстом и сообщением (необходимо настроить работу по восходящему потоку с помощью триггера GHPRB) ✔︎
    • Поля пользовательских контекстных сообщений отражают те, которые перечислены в разделе Настройка триггеров (я сомневаюсь, что оба они необходимы, но, похоже, не работают в настоящее время)

Что мне не хватает? Следует отметить, что у меня нет плагина DSL Jobs, поэтому я не могу использовать расширение, предоставляемое GHPRB.

Ответ 1

После обширных проб и ошибок этот комментарий пролил свет на мою проблему.

Суть моей проблемы заключалась в том, что Downstream не получал требуемые переменные среды, которые предоставляет GHPRB. А именно ghprbGhRepository, ghprbPullId, ghprbActualCommit и sha1.

Правильные конфигурации для обоих заданий следующие:


Upstream Job

Управление исходным кодом: Git

  • Имя: origin
  • Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • Спецификатор отрасли: ${sha1}

Сборка триггеров

  • GitHub Pull Request Builder
    • Используйте github hooks для запуска сборки ✔︎
    • Отобразить ошибки сборки в строках ниже по потоку? ✔︎
    • Настройка триггера заполняется настраиваемыми контекстными сообщениями

Build


Работа в нисходящем направлении

Управление исходным кодом: Git

  • Имя: origin
  • Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • Спецификатор отрасли: ${sha1}

Среда сборки

  • Установить статус фиксации GitHub с настраиваемым контекстом и сообщением (необходимо настроить работу по восходящему потоку с помощью триггера GHPRB) ✔︎