web-dev-qa-db-fra.com

Déclencheurs de workflow manuels dans les actions Github

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 à 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?

7
Antoine C.

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.

0
user1064504

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_dispatchici .

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.

https://www.actionspanel.app/

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.

0
aaronbatilo