D’ailleurs, comment gérez-vous les workflows basés sur des déploiements de containers ?
Personnellement je reste simple. J’ai travaillé sur des projets avec des gestions d’arbres Git complexe, j’ai toujours trouvé que le gain ne valait pas la complexité apportée.
Où je suis, chaque commit sur une branche construit une image Docker du projet. Cette image peut être déployée sur un environnement de dev si besoin pour faire des tests.
Une fois merge sur master, la CI crée automatiquement un tag et incrémente la version du projet. Cette release est ensuite déployée sur les différents environnements (preprod, prod…) par les développeurs.
On est donc pas sur du déploiement continu, c’est au dev de faire l’action de déployer. Mais on commence à passer nos apps sur ArgoCD (on a notre propre outil interne de génération de manifests Kubernetes et de gestion de version des applications par environnement qu’on a intégré avec ArgoCD car personne aimait Kustomize), mais notre façon de gérer les dépôts Git ne devrait pas changer.
Hors conteneurs (applis packagés dans des .deb par exemple) c’est un peu pareil. La CI pousse un paquet dans un dépôt “test” qui peut être installé sur un ou des serveurs pour tests. Une fois merge sur master, un paquet est construit est poussé dans un repo “staging” et déployé sur les environnements du style preprod. Pour déployer en prod, on n’a qu’à promote le paquet de staging dans le dépôt de prod.