Обходной путь для публикации комментариев от действий GitHub из разветвленных репозиториев - PullRequest
0 голосов
/ 25 апреля 2020

Мне нужно публиковать комментарии к запросу GitHub по завершении действия GitHub, например, когда член сообщества FOSS представляет PR. Я знаю, что когда действие запускается из разветвленного репо, у токена нет доступа на запись в родительское репо, поэтому он не может оставлять комментарии.

Существуют ли какие-либо приемлемые обходные пути, которые люди нашли для этого?

1 Ответ

0 голосов
/ 27 апреля 2020

Я не смог найти никаких готовых действий, поэтому вот полный код для обхода ограничений GitHub Actions, написанный на bash + jq + curl, и прямой вызов GitHub API.

  • Действие запроса извлечения создает файл .md с содержимым комментария к уценке Github и сохраняет его как артефакт под некоторым именем. Это действие выполняется в контексте разветвленного репо, поэтому у него нет возможности опубликовать PR-комментарий.
  • Обычное cron задание просматривает все открытые запросы извлечения и недавно завершенные запуски действий. ищет опубликованные артефакты и копирует их содержимое в виде комментариев к соответствующим запросам извлечения, обновляя существующий комментарий о повторных запусках.

Подробные шаги задания cron:

  • получить все открытые запросы извлечения
  • получить все последние запуски рабочего процесса
  • сопоставить запросы извлечения и их текущий SHA с последним запуском рабочего процесса для того же SHA
  • для каждого найденного совпадение <pull-request-number> и <workflow-run-id>:
    • загрузка артефакта из прогона рабочего процесса - ожидается один файл с содержимым уценки
    • , просмотрите существующие комментарии PR, чтобы увидеть, если мы разместили комментарий before (использует скрытый магический заголовок для идентификации нашего комментария)
    • создайте или обновите комментарий с новым текстом (если он был изменен)
...