web-dev-qa-db-fra.com

Déployer des services individuels à partir d'un monorepo à l'aide d'actions github

J'ai environ 10 micro-services individuels qui sont principalement des fonctions cloud pour divers travaux de traitement de données, qui vivent tous dans un seul référentiel github.

L'objectif est de déclencher le déploiement sélectif de ces services sur Google Cloud Functions, sur Push to a branch - lorsqu'une fonction individuelle a été mise à jour.

Je dois éviter la situation dans laquelle la mise à jour d'un service unique provoque le déploiement de toutes les fonctions cloud.

Ma structure de référentiel actuelle:

/repo
--/service_A
----/function
----/notebook
--/service_B
----/function
----/notebook

En passant, quels sont les avantages/inconvénients de l'utilisation de Github Actions VS Google Cloud Build pour une telle automatisation?

5
dendog

Vous pouvez également exécuter un script pour découvrir quels services ont été modifiés en fonction de git diff et déclencher le travail correspondant via GitHub REST API .

Il peut y avoir deux workflows main.yml et services.yml.

Le workflow principal sera configuré pour être toujours démarré sur Push et il sera démarrer uniquement le script pour savoir quels services ont été modifiés. Pour chaque service modifié événement de répartition du référentiel sera déclenché avec le nom du service dans la charge utile.

Le workflow des services sera configuré pour être démarré le repository_dispatch et il contiendra un travail pour chaque service. Les travaux auraient une condition supplémentaire basée sur la charge utile de l'événement.

Voir vitrine avec une configuration similaire: https://github.com/zladovan/monorepo

0
Ján Čabala