Konfiguruję akcje Github dla repozytorium projektu.
Przepływ pracy składa się z następujących kroków:
- Budowanie obrazu dokera
- Przekazywanie obrazu do rejestru kontenera
- Wdrożyć wdrożenie Kubernetes.
Mam jednak dwa różne wdrożenia Kubernetes: jedno do programowania i jedno do produkcji. Dlatego mam także dwa przepływy pracy w Github Action.
Przepływ pracy Akcji Github dla programowania jest uruchamiany za każdym razem, gdy wypychane jest zatwierdzenie:
on:
push:
branches:
- master
Ale nie chcę tego w moim procesie produkcyjnym. Potrzebowałbym ręcznego wyzwalacza, takiego jak przycisk Wyślij do produkcji . Nie widziałem nic podobnego w dokumentacji.
Czy istnieje sposób, aby ręcznie uruchomić przepływ pracy w Github Actions?
Jak mogę rozdzielić proces projektowania i produkcyjny, aby osiągnąć to, czego chcę, w Github Actions, Docker lub Kubernetes?
źródło
repository_dispatch
bok można łączyćwatch
zif: github.actor == 'hackerman'
odfiltrować przypadkowych obcych. Lub jeszcze lepiej -if: github.actor == github.event.repository.owner.login
dla dodatkowego „bezpieczeństwa”: DAktualizacja : W przypadku rozwiązania „ChatOps” w stylu polecenia ukośnika zobacz akcję slash-command-dispatch . Dzięki temu możesz uruchamiać przepływy pracy za pomocą poleceń ukośnika (np.
/deploy
) Z wydania i komentować żądania żądania.Oto podstawowy przykład
deploy
polecenia ukośnika.REPO_ACCESS_TOKEN
jest osobistym tokenem orepo
zasięguPolecenie można przetwarzać w tym przepływie pracy.
Istnieje wiele innych opcji i różnych konfiguracji. Zobacz instrukcje slash-command-dispatch, aby uzyskać pełne instrukcje użytkowania.
Oryginalna odpowiedź :
repository_dispatch
przepływ pracy można ręcznie uruchomić przez wywołanie interfejsu API GitHub w następujący sposób.[username]
to nazwa użytkownika GitHub[token]
jest osobistym tokenem orepo
zasięgu[repository]
to nazwa repozytorium, w którym znajduje się przepływ pracy.źródło
event_type
jest dostępne dla przepływu pracy jakogithub.event.action
, więc określone zadania / kroki można włączyć / wyłączyć w razie potrzeby. PS: PAT nie jest tak naprawdę potrzebny, zaczynając od curl-u "[username]:[password]"
a nawet-u "[username]"
działa (w drugim przypadku curl pyta użytkownika o hasło); łatwiejsze w użyciu w niektórych przypadkach (na przykład podczas pisania skryptów, które przyjmują nazwę użytkownika jako dane wejściowe, lub skryptów przeznaczonych do użytku przez mniej doświadczonych użytkowników).Chociaż post Sarah był najbliższą i najprostszą odpowiedzią na pierwotne pytanie, jest nieco zuchwały, więc w końcu stworzyliśmy
dev
gałąź, która używa następujących wyzwalaczy:Przepływ pracy programistycznej: uruchamiany po wypchnięciu
dev
gałęzi:Przepływ pracy produkcji: uruchamiany, gdy wysyłane jest żądanie ściągnięcia / scalenia z
dev
domaster
:źródło
Edytowane w celu uzyskania bardziej szczegółowych informacji / wyjaśnień.
Jedną rzeczą, którą możesz zrobić, to zadzwonić
repository_dispatch
. Możesz wyświetlić dokumentację GitHub dotyczącą korzystania zrepository_dispatch
tutaj .Na przykład jeśli masz przepływ pracy Akcje GitHub, który wygląda następująco:
Możesz utworzyć zdarzenie wysyłki repozytorium, wykonując kroki opisane w dokumentacji API GitHub v3 .
Najpierw utwórz osobisty token dostępu (PAT) na GitHub do uwierzytelnienia.
Następnie możesz biegać
curl
tak:Jednocześnie chciałem podzielić się małym projektem, nad którym pracowałem z kumplem, który rozwiązuje dokładnie ten problem.
https://www.actionspanel.app/
ActionsPanel używa tego samego
repository_dispatch
interfejsu API, ale robi to za pomocą tokena aplikacji GitHub, dzięki czemu nie musisz się martwić o zarządzanie własnym PAT. To także znacznie ułatwia uruchamianie działań w zespołach z wieloma osobami.W oparciu o żądania użytkowników i opinie, wbudowaliśmy funkcje określające, do której gałęzi wysłać
repository_dispatch
, a nawet stworzyliśmy sposób wprowadzania parametrów, gdy chcesz wykonać akcję.Skonfigurujesz przyciski przy użyciu deklaratywnego pliku yaml, który pozostawiasz w repozytorium, a ActionsPanel odczyta ten plik i dynamicznie utworzy interfejs użytkownika, aby wyzwolić działania.
źródło
Innym sposobem rozwiązania tego problemu w obecnej ofercie Github Action jest utworzenie
production
gałęzi z poziomu master, gdy potrzebne jest wdrożenie i wyzwalanie akcji wdrażania wproduction
gałęzi.production
Oddział jest zasadniczo lustrzanymmaster
.Kompilacje / wypychanie deweloperów może się zdarzyć, gdy nastąpi zatwierdzenie do master.
W pewnym momencie harmonogramu wydań możesz podnieść PR do
production
oddziału. To zajmie się kompilacją / wdrożeniem prod.źródło