Je configure des actions Github pour un référentiel de projet.
Le workflow comprend les étapes suivantes:
- Création d'une image Docker
- Pousser l'image vers un registre de conteneurs
- Déployez un déploiement Kubernetes.
Cependant, j'ai deux déploiements Kubernetes différents: un pour le développement et un pour la production. Par conséquent, j'ai également deux workflows Github Action.
Le workflow d'action Github pour le développement est déclenché chaque fois qu'un commit est poussé:
on:
push:
branches:
- master
Mais je ne veux pas cela pour mon flux de production. J'aurais besoin d'un déclencheur manuel, comme un bouton Envoyer en production . Je n'ai rien vu de semblable dans les documents.
Existe-t-il un moyen de déclencher un workflow manuellement dans les actions Github?
Comment puis-je diviser mon développement et mes workflows de production pour atteindre ce que je veux, que ce soit sur Github Actions, Docker ou Kubernetes?
la source
repository_dispatch
part, on peut combinerwatch
avecif: github.actor == 'hackerman'
pour filtrer les étrangers aléatoires. Ou mieux encore -if: github.actor == github.event.repository.owner.login
pour plus de "sécurité": DMise à jour : pour une solution de style de commande slash "ChatOps", voir l'action slash-command-dispatch . Cela peut vous permettre de déclencher des workflows avec des commandes de barre oblique (par exemple
/deploy
) à partir des commentaires de demande et d'extraction.Voici un exemple de base pour une
deploy
commande slash.REPO_ACCESS_TOKEN
est unrepo
scope d' accès personnel TokenLa commande peut être traitée dans ce workflow.
Il y a beaucoup plus d'options et de configurations différentes. Voir slash-command-dispatch pour des instructions d'utilisation complètes.
Réponse originale : Un
repository_dispatch
workflow peut être déclenché manuellement par un appel à l'API GitHub comme suit.[username]
est un nom d'utilisateur GitHub[token]
est unrepo
scope d' accès personnel Token[repository]
est le nom du référentiel dans lequel réside le workflow.la source
event_type
est disponible pour le workflow en tant quegithub.event.action
, des travaux / étapes spécifiques peuvent être activés / désactivés en cas de besoin. PS: PAT n'est pas vraiment nécessaire, le démarrage de curl avec-u "[username]:[password]"
ou même-u "[username]"
fonctionne également (dans le deuxième cas, curl invite l'utilisateur à saisir son mot de passe); plus facile à utiliser dans certains cas (par exemple lors de l'écriture de scripts qui prennent le nom d'utilisateur en entrée, ou de scripts destinés à être utilisés par des utilisateurs moins avertis en technologie).Bien que le message de Sarah soit la réponse la plus proche et la plus simple à la question d'origine, il est quelque peu hacky, nous avons finalement fini par créer une
dev
branche pour utiliser les déclencheurs suivants:Workflow de développement: déclenché lors d'un push sur la
dev
branche:Workflow de production: déclenché lorsqu'une demande / fusion d'extraction est effectuée à partir de
dev
versmaster
:la source
Modifié pour plus de détails / explications.
Une chose que vous pouvez faire est d'appeler
repository_dispatch
. Vous pouvez consulter la documentation GitHub pour utiliser unrepository_dispatch
ici .Par exemple, si vous avez un flux de travail Actions GitHub qui ressemble à ceci:
Vous pouvez créer un événement de répartition de référentiel en suivant les étapes décrites dans la documentation de l'API GitHub v3 .
Tout d'abord, créez un jeton d'accès personnel (PAT) sur GitHub pour l'authentification.
Ensuite, vous pouvez exécuter
curl
comme suit:En même temps, je voulais aussi partager un petit projet sur lequel je travaillais avec un copain qui résout ce problème précis.
https://www.actionspanel.app/
ActionsPanel utilise cette même
repository_dispatch
API mais le fait avec un jeton GitHub App afin que vous n'ayez pas à vous soucier de la gestion de votre propre PAT. Cela facilite également le déclenchement de vos actions dans plusieurs équipes composées de plusieurs personnes.Sur la base des demandes et des commentaires des utilisateurs, nous avons intégré des fonctionnalités pour spécifier la branche à laquelle envoyer la
repository_dispatch
, et nous avons même créé une manière d'injecter des paramètres lorsque vous souhaitez exécuter l'action.Vous configurez vos boutons avec un fichier yaml déclaratif que vous laissez dans le référentiel, et ActionsPanel lira ce fichier et créera dynamiquement votre interface utilisateur pour vous permettre de déclencher vos actions.
la source
Une autre façon de résoudre ce problème avec l'offre d'action Github actuelle consiste à créer une
production
branche à partir du maître lorsqu'un déploiement est nécessaire et à déclencher une action de déploiement sur laproduction
branche. Laproduction
branche est essentiellement un miroir de lamaster
.Les builds / push de développement peuvent se produire chaque fois qu'il y a un commit sur le maître.
À un certain moment dans le calendrier de publication, vous pouvez augmenter le PR à la
production
branche. Cela prendra en charge la génération / déploiement de prod.la source