Monorepo
Plusieurs applications dans un même dépôt : un service par application, chacun construit avec son propre Dockerfile.
Le principe
Section intitulée « Le principe »Un service Fransys par application du dépôt, tous reliés au même dépôt. Chaque service a son pipeline, qui construit l’image avec le Dockerfile de son application.
mon-depot/└── apps/ ├── api/ │ └── Dockerfile └── front/ └── DockerfileLes étapes, pour chaque application
Section intitulée « Les étapes, pour chaque application »- Ajouter le service : une Application par sous-dossier, avec un nom clair (
api,front). - Relier le dépôt : la même origine du code, le même dépôt et la même branche.
- Brancher la CI : Fransys ouvre une merge request qui ajoute son pipeline.
- Indiquer le Dockerfile : dans votre dépôt, créez une variable de CI propre à ce service (sur GitHub : Settings › Secrets and variables › Actions › Variables), par exemple
DOCKERFILE_PATH_API=apps/api/Dockerfile. Dans le fichier de pipeline ajouté par la merge request, remplacez la variableDOCKERFILE_PATHpar la vôtre, puis renommez le fichier (par exemplefransys_api.yml) pour qu’il ne soit pas écrasé par celui du service suivant. - Merger et vérifier : quand le pipeline passe, le dernier commit apparaît dans le service.
Recommencez pour chaque application, avec sa propre variable (DOCKERFILE_PATH_FRONT…).
Conseils
Section intitulée « Conseils »- Une faute dans le chemin du Dockerfile fait échouer le build : vérifiez-le dans le journal du pipeline.
- Chaque push déclenche les pipelines de toutes les applications. Pour n’en construire qu’une, ajoutez un filtre de chemins à son pipeline (
paths:sur GitHub Actions,rules: changes:sur GitLab CI). - La même logique vaut pour GitLab.