Как удаленно запускать действия GitHub с помощью веб-перехватчиков
GitHub Actions — это служба CI/CD, которая может запускать сборки и тесты базы кода вашего проекта.
GitHub Actions — это служба CI/CD, которая может запускать сборки и тесты базы кода вашего проекта. Обычно действия запускаются автоматически при новых коммитах, но их также можно запускать удаленно с помощью уведомлений веб-перехватчика.
Зачем использовать вебхуки?
Сборки действий запускаются на основе событий в вашем репозитории. Обычно это означает запуск сборок и тестов при каждом новом коммите, помеченном выпуске или запросе на включение. Поскольку это основной способ изменения вашего кода, он охватывает большинство случаев.
Однако, если вы полагаетесь на другие выпуски программного обеспечения как на зависимости, довольно часто требуются регулярные сборки, даже если код не меняется. Поскольку GitHub не знает, когда ваши зависимости получат обновления, вам придется вручную отправить новый выпуск с тегами или перезапустить предыдущую сборку, чтобы перестроить ее с обновленной зависимостью.
Вебхуки — это способ автоматической обработки этой проблемы, когда внешнее приложение обращается к GitHub, чтобы вы могли запустить новую сборку. Веб-перехватчики могут быть легко отправлены любым приложением, способным отправлять HTTP-запросы, включая любой язык программирования, а также инструменты командной строки, такие как curl
Другой распространенный вариант использования — создание статического сайта. Такие платформы, как Gatsby, требуют перестройки сайта при каждом изменении контента. Часто это делается вручную, но может быть автоматизировано службами управления контентом с помощью веб-перехватчиков.
Вам нужно убедиться, что все, что вы делаете, невозможно выполнить с помощью существующих триггеров действий GitHub. Существует удивительное количество встроенных триггеров, о которых вы можете прочитать на GitHub Wiki. Например, вы можете настроить расписание для запуска сборок на основе синтаксиса cron, что может удовлетворить ваши потребности, если вам нужны регулярные сборки в определенное время.
Настройка триггера вебхука для действий Github
Во-первых, вам нужно убедиться, что ваш рабочий процесс GitHub Actions настроен правильно и работает нормально без веб-перехватчика. Это будет полностью зависеть от вашей кодовой базы, но на GitHub есть множество готовых шаблонов, и вы можете прочитать наше руководство по настройке рабочего процесса, чтобы узнать больше.
Триггером, который мы будем использовать для запуска действий из веб-перехватчиков, является repository_dispatch
, который используется для внешних веб-перехватчиков.
Во-первых, вам нужно добавить триггер в раздел «Вкл» вашего файла рабочего процесса. Это не обязательно заменяет другие триггеры, поэтому вы все равно можете запустить этот рабочий процесс как для коммитов, так и для веб-перехватчиков.
Триггер repository_dispatch
может принимать необязательный параметр типа события, который можно использовать для фильтрации между различными веб-перехватчиками, если вы хотите, чтобы один репозиторий принимал несколько веб-перехватчиков.
Это все, что требуется со стороны GitHub, и теперь мы можем отправить вебхук. Формат URL-адреса следующий и принимает только запросы POST:
https://api.github.com/repos/{username}/{repo}/dispatches
Однако вам нужно будет установить заголовок авторизации. Это раздражает, но имеет смысл — в противном случае кто угодно может отправлять уведомления веб-перехватчика в ваш репозиторий.
"Accept": "application/vnd.github+json""Authorization": "token {personal_access_token}"
Наконец, вам нужно установить event_type
с телом JSON в запросе:
{ "event_type": "dependency_update"}
Вы можете создать токен личного доступа в личных настройках или настройках организации. Зайдите в настройки, нажмите «Настройки разработчика» и сгенерируйте новый токен. Этому токену потребуется разрешение на доступ к репозиторию и его действиям.
Получив токен, вы можете отправлять авторизованные веб-перехватчики. Полезно использовать инструмент отладки API, такой как Postman или Curl, чтобы проверить, работает ли он; если вебхук пройдет, вы получите ответ 204 No Content и увидите рабочий процесс, запущенный на вкладке «Действия», с типом события, используемым в качестве заголовка.
Как только вебхук заработает, вам нужно будет настроить внешнее приложение для его использования и полностью подключить рабочий процесс.