Ich richte Github-Aktionen für ein Projekt-Repository ein.
Der Workflow besteht aus folgenden Schritten:
- Erstellen eines Docker-Images
- Verschieben des Bildes in eine Containerregistrierung
- Rollout einer Kubernetes-Bereitstellung.
Ich habe jedoch zwei verschiedene Kubernetes-Bereitstellungen: eine für die Entwicklung und eine für die Produktion. Daher habe ich auch zwei Github Action-Workflows.
Der Github Action-Workflow für die Entwicklung wird jedes Mal ausgelöst, wenn ein Commit gesendet wird:
on:
push:
branches:
- master
Aber das möchte ich nicht für meinen Produktionsworkflow. Ich würde einen manuellen Auslöser benötigen, wie eine Schaltfläche An Produktion senden . Ich habe in den Dokumenten nichts Ähnliches gesehen.
Gibt es eine Möglichkeit, einen Workflow in Github-Aktionen manuell auszulösen?
Wie kann ich meine Entwicklungs- und Produktionsworkflows aufteilen, um das zu erreichen, was ich möchte, entweder bei Github Actions, Docker oder Kubernetes?
quelle
repository_dispatch
beiseite, man kombiniertwatch
mitif: github.actor == 'hackerman'
zum Ausfiltern von zufällig Fremden. Oder noch besser -if: github.actor == github.event.repository.owner.login
für zusätzliche "Sicherheit": DUpdate : Für eine "ChatOps" -Lösung im Slash-Befehlsstil siehe Slash-Command-Dispatch- Aktion. Auf diese Weise können Sie Workflows mit Schrägstrichen (z. B.
/deploy
) aus Issue- und Pull-Anforderungskommentaren auslösen .Hier ist ein grundlegendes Beispiel für einen
deploy
Schrägstrichbefehl.REPO_ACCESS_TOKEN
ist einrepo
scoped Personal Access TokenDer Befehl kann in diesem Workflow verarbeitet werden.
Es gibt viel mehr Optionen und verschiedene Setups. Ausführliche Anweisungen zur Verwendung finden Sie unter Schrägstrich-Befehlsversand .
Ursprüngliche Antwort : Ein
repository_dispatch
Workflow kann manuell durch einen Aufruf der GitHub-API wie folgt ausgelöst werden.[username]
ist ein GitHub-Benutzername[token]
ist einrepo
scoped Personal Access Token[repository]
ist der Name des Repositorys, in dem sich der Workflow befindet.quelle
event_type
wird, steht dem Workflow als zur Verfügunggithub.event.action
, sodass bestimmte Jobs / Schritte bei Bedarf aktiviert / deaktiviert werden können. PS: PAT wird nicht wirklich benötigt, das Starten von Curl beginnt mit-u "[username]:[password]"
oder-u "[username]"
funktioniert sogar (im zweiten Fall fordert Curl den Benutzer zur Eingabe eines Passworts auf). In einigen Fällen einfacher zu verwenden (z. B. beim Schreiben von Skripten, bei denen der Benutzername als Eingabe verwendet wird, oder von Skripten, die von weniger technisch versierten Benutzern verwendet werden sollen).Obwohl Sarahs Beitrag die naheliegendste und einfachste Antwort auf die ursprüngliche Frage war, ist er etwas hackig, sodass wir schließlich einen
dev
Zweig erstellt haben, in dem die folgenden Auslöser verwendet werden:Entwicklungsworkflow: Wird ausgelöst, wenn ein Push für den
dev
Zweig ausgeführt wird:Produktionsablauf: ausgelöst , wenn ein Pull - Request / Druck aus gemacht
dev
zumaster
:quelle
Für weitere Details / Erklärungen bearbeitet.
Eine Sache, die Sie tun können, ist anzurufen
repository_dispatch
. Sie können die GitHub Dokumentation sehen eine für die Verwendungrepository_dispatch
hier .Wenn Sie beispielsweise einen GitHub Actions-Workflow haben, der folgendermaßen aussieht:
Sie können ein Repository-Versandereignis erstellen, indem Sie die Schritte ausführen, die in der GitHub v3-API-Dokumentation erläutert werden .
Erstens, einen persönlichen Zugriffstoken (PAT) erstellen auf GitHub zur Authentifizierung.
Dann können Sie so laufen
curl
:Gleichzeitig wollte ich ein kleines Projekt, an dem ich gearbeitet habe, mit einem Kumpel teilen, der genau dieses Problem löst.
https://www.actionspanel.app/
ActionsPanel verwendet dieselbe
repository_dispatch
API, jedoch mit einem GitHub-App-Token, sodass Sie sich nicht um die Verwaltung Ihrer eigenen PAT kümmern müssen. Dies macht es auch viel einfacher, Ihre Aktionen in Teams mit mehreren Personen auszulösen.Basierend auf Benutzeranfragen und Feedback haben wir Funktionen integriert, um anzugeben, an welchen Zweig der gesendet werden
repository_dispatch
soll, und wir haben sogar eine Möglichkeit eingebaut, Parameter einzufügen, wenn Sie die Aktion ausführen möchten.Sie konfigurieren Ihre Schaltflächen mit einer deklarativen Yaml-Datei, die Sie im Repo belassen, und ActionsPanel liest diese Datei und erstellt dynamisch Ihre Benutzeroberfläche, damit Sie Ihre Aktionen auslösen können.
quelle
Eine andere Möglichkeit, dies mit dem aktuellen Github-Aktionsangebot zu beheben, besteht darin, einen
production
Zweig vom Master zu erstellen, wenn eine Bereitstellung erforderlich ist, und eine Bereitstellungsaktion für denproduction
Zweig auszulösen . Derproduction
Zweig ist im Wesentlichen ein Spiegel dermaster
.Dev Builds / Push können immer dann erfolgen, wenn ein Commit an den Master erfolgt.
Zu einem bestimmten Zeitpunkt im Veröffentlichungsplan können Sie die PR für die
production
Zweigstelle erhöhen . Dies kümmert sich um die Erstellung / Bereitstellung des Produkts.quelle