Правильная конфигурация для Jenkins GitHub Pull Request Builder вниз по течению

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

Вот суммарный поток CI, который я хотел бы настроить:

  1. Для моего git-репозитория открывается запрос на получение, который запускает задание Upstream для запуска в Jenkins
  2. Апстрим сообщает о своем статусе на основе сборки и, если SUCCESS, должен вызывать работу Downstream через действие после сборки
  3. 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-хуки для запуска сборки ✔︎
    • Отобразить ошибки сборки на последующих сборках? ✔︎
    • Настройка триггера заполнена пользовательским контекстным обменом сообщениями

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

  • Построить другие проекты: 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-хуки для запуска сборки ✔︎
    • Отобразить ошибки сборки на последующих сборках? ✔︎
    • Настройка триггера заполнена пользовательским контекстным обменом сообщениями

строить


Работа вниз по течению

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

  • Название: origin
  • Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • Спецификатор филиала: ${sha1}

Построить среду

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