L'article présente une approche pratique pour optimiser les pipelines CI/CD grâce aux matrices dynamiques de GitHub Actions, en se concentrant sur un monorepo contenant plusieurs microservices pour un projet de raccourcisseur d'URL. L'objectif est d'éviter les reconstructions inutiles en détectant automatiquement les services modifiés lors d'une pull request, ce qui permet de gagner du temps et des ressources.
Le workflow implémente un système intelligent qui analyse les fichiers modifiés dans la PR pour déterminer quels services doivent être reconstruits. Si des changements sont détectés dans le répertoire pkg (contenant les bibliothèques partagées), tous les services Go sont reconstruits, tandis que seuls les services spécifiquement modifiés sont reconstruits dans les autres cas. La solution utilise l'action changed-files pour identifier les modifications et génère dynamiquement une matrice de construction.
L'implémentation technique comprend deux jobs principaux : un job de détection des services modifiés qui analyse les changements et génère la matrice dynamique, et un job de construction qui utilise cette matrice pour builder et pousser uniquement les images Docker des services concernés. Le système ajoute automatiquement des commentaires dans la PR avec les informations des images construites et les commandes de pull associées.
L'avantage principal de cette approche est son automatisation complète : les développeurs n'ont pas besoin de modifier manuellement la configuration CI lorsqu'ils ajoutent de nouveaux services, car le système détecte automatiquement les nouveaux Dockerfiles. L'article propose également comme exercice d'aller plus loin en implémentant une analyse des dépendances entre services pour optimiser davantage les reconstructions.