Дженкинс: прокомментируйте запрос на извлечение Bitbucket

#jenkins #bitbucket #pull-request

#Дженкинс #bitbucket #запрос на извлечение

Вопрос:

Наша интеграция Jenkins Bitbucket cloud уже работает и использует задание конвейера с несколькими ответвлениями для уведомления Bitbucket о статусе сборки запроса на извлечение.

Теперь я хочу улучшить его и добавить среды предварительного просмотра, например, pr150.testing.company.com чтобы мы могли протестировать рабочую сборку перед объединением. Я планировал использовать docker-compose для динамического запуска / остановки сред предварительного просмотра.

Теперь Дженкинсу необходимо прокомментировать запрос на извлечение Bitbucket со ссылкой на среду предварительного просмотра. Я знаю, что API Bitbucket поддерживает создание комментариев к запросу на извлечение.

Я представляю себе подобные комментарии: Комментарий Дженкинса к запросу на извлечение

Этот пример взят из Jenkins-X

Поддерживает ли какой-либо плагин Bitbucket для Jenkins автоматическое создание таких комментариев?

Редактировать: чтобы уточнить, достаточно плагина, который автоматически комментирует запрос на извлечение. Создать содержимое комментария с нашей стороны не проблема.

Ответ №1:

Я не смог найти плагин, но вы можете выполнять команды оболочки как часть сборки заданий для этого. Поскольку Дженкинс обрабатывает коммиты, а не запросы на извлечение, это немного faf. Сначала вам нужно получить идентификатор запроса на извлечение из имени ветки, используя API. Используя REST 1.0 API, вы можете сделать это таким образом.

 BranchName=`echo ${GIT_BRANCH} | sed 's/origin///'`
PullRequestID=`curl -s --request GET --url '{bitbucket_url}/rest/api/1.0/projects/{project_key}/repos/{repo_key}/pull-requests?State=OPENamp;at=refs/heads/'${BranchName}'amp;direction=OUTGOING' --header 'Content-Type: application/json' -u username:password | sed -n 's/.*"values":[{"id":([0-9]*).*/1/p'`
echo '{"text": "Here's my comment with hyperlink"}' > comment.json
curl --request POST --url '{bitbucket_url}/rest/api/1.0/projects/{project_key}/repos/{repo_key}/pull-requests/'$PullRequestID'/comments' --header 'Content-Type: application/json' -u username:password -d @comment.json
rm comment.json
  

Примечания:

  • Удаленное имя может быть не источником, а чем-то специфичным для проекта. Проверьте журнал консоли, чтобы узнать это
  • Потребуется изменение для API 2.0, но концепция должна остаться прежней