Je configure des actions Github pour un référentiel de projet.
Le workflow comprend les étapes suivantes:
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 à la 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, soit sur Github Actions, Docker ou Kubernetes?
Une autre façon de résoudre ce problème avec l'offre d'action Github actuelle consiste à créer une branche production
à partir du maître lorsqu'un déploiement est nécessaire et à déclencher une action de déploiement sur la branche production
. La branche production
est essentiellement un miroir de la master
.
on:
Push:
branches:
- master
Les versions de développement/push peuvent se produire chaque fois qu'il y a un commit sur le maître.
on:
Push:
branches:
- production
À un moment donné du calendrier de publication, vous pouvez augmenter le PR à la branche production
. Cela prendra en charge la génération/déploiement de prod.
Modifié pour plus de détails/explications.
Une chose que vous pouvez faire est d'appeler repository_dispatch
. Vous pouvez afficher la documentation GitHub pour utiliser un repository_dispatch
ici .
Par exemple, si vous avez un flux de travail Actions GitHub qui ressemble à ceci:
on:
repository_dispatch:
types: [run_tests]
name: Run tests
jobs:
test:
name: Run your tests
runs-on: ubuntu-latest
steps:
- run: |
echo "I just ran all your tests!"
Vous pouvez créer un événement de répartition de référentiel en suivant les étapes expliquées dans Documentation API GitHub v .
Tout d'abord, créez un jeton d'accès personnel (PAT) sur GitHub pour l'authentification.
Ensuite, vous pouvez exécuter curl
comme ceci:
curl \
-H "Authorization: token $YOUR_PAT" \
--request POST \
--data '{"event_type": "run_tests"}' \
https://api.github.com/repos/$USER/$REPOSITORY/dispatches
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.
ActionsPanel utilise ce 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 à envoyer repository_dispatch
to, et nous avons même construit 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.