Я настраиваю Github Actions для репозитория проекта.
Рабочий процесс состоит из следующих шагов:
- Создание образа докера
- Перенос изображения в реестр контейнера
- Развернуть развертывание Kubernetes.
Тем не менее, у меня есть два различных развертывания Kubernetes: один для разработки, а другой для производства. Следовательно, у меня также есть два рабочих процесса Github Action.
Рабочий процесс Github Action для разработки запускается при каждом нажатии коммита:
on:
push:
branches:
- master
Но я не хочу этого для моего производственного процесса. Мне нужен ручной триггер, например, кнопка « Отправить в производство» . Я не видел ничего похожего в документах.
Есть ли способ запустить рабочий процесс вручную в Github Actions?
Как я могу разделить процессы разработки и производства для достижения того, чего я хочу, в Github Actions, Docker или Kubernetes?
источник
repository_dispatch
сторону, можно комбинироватьwatch
сif: github.actor == 'hackerman'
отфильтровывать случайных незнакомцев. Или еще лучше -if: github.actor == github.event.repository.owner.login
для дополнительной «безопасности»: DОбновление : для решения "ChatOps" в стиле команды слеша см. Действие slash-command-dispatch . Это может позволить вам запускать рабочие процессы с помощью команд косой черты (например
/deploy
) из комментариев по запросу и запросу.Вот базовый пример для
deploy
команды косой черты.REPO_ACCESS_TOKEN
являетсяrepo
областью видимости Личных Токенов доступаКоманда может быть обработана в этом рабочем процессе.
Есть еще много вариантов и различных настроек. Смотрите slash-command-dispatch для полной инструкции по использованию.
Оригинальный ответ :
repository_dispatch
рабочий процесс может быть запущен вручную с помощью вызова API GitHub следующим образом.[username]
такое имя пользователя GitHub[token]
являетсяrepo
областью видимости Личных Токенов доступа[repository]
Имя репозитория, в котором находится рабочий процесс.источник
event_type
, доступно для рабочего процесса какgithub.event.action
, поэтому определенные задания / шаги могут быть включены / отключены при необходимости. PS: PAT на самом деле не нужен, запуск curl с-u "[username]:[password]"
или даже-u "[username]"
работает (во втором случае curl запрашивает пароль у пользователя); в некоторых случаях проще в использовании (например, при написании сценариев, в которых вводится имя пользователя, или сценариев, предназначенных для использования менее технически подкованными пользователями).Хотя сообщение Сары было самым близким и простым ответом на первоначальный вопрос, оно несколько хакерское, поэтому в итоге мы создали
dev
ветку, в которой использовались следующие триггеры:Рабочий процесс разработки: запускается, когда в
dev
ветке делается push :Рабочий процесс производства: срабатывают , когда запрос тянуть / слияние сделано из
dev
кmaster
:источник
Отредактировано для более подробной информации / объяснения.
Одна вещь, которую вы можете сделать, это позвонить
repository_dispatch
. Вы можете просмотреть документацию GitHub для использованияrepository_dispatch
здесь .Например, если у вас есть рабочий процесс GitHub Actions, который выглядит следующим образом:
Вы можете создать событие отправки репозитория, выполнив шаги, описанные в документации по GitHub v3 API .
Сначала создайте личный токен доступа (PAT) на GitHub для аутентификации.
Затем вы можете запустить
curl
так:В то же время я также хотел поделиться небольшим проектом, над которым я работаю, с приятелем, который решает именно эту проблему.
https://www.actionspanel.app/
ActionsPanel использует тот же
repository_dispatch
API, но делает это с токеном GitHub App, так что вам не нужно беспокоиться об управлении собственным PAT. Это также упрощает запуск ваших действий в командах с несколькими людьми.Основываясь на пользовательских запросах и отзывах, мы встроили функции, указывающие, в какую ветку отправлять
repository_dispatch
, и даже встроили способ ввода параметров, когда вы хотите выполнить действие.Вы настраиваете свои кнопки с помощью декларативного файла yaml, который вы оставляете в репозитории, и ActionsPanel прочитает этот файл и динамически создаст ваш пользовательский интерфейс для запуска ваших действий.
источник
Другой способ решить эту проблему с помощью текущего предложения Github Action - создать
production
ветку из master, когда необходимо развертывание, и инициировать действие развертывания вproduction
ветке.production
Ветви, по существу , зеркалоmaster
.Dev builds / push может происходить всякий раз, когда есть коммит мастера.
В какой-то момент в графике выпуска вы можете поднять PR в
production
ветке. Это позаботится о сборке / развертывании prod.источник