Intégration et livraison continues pour les monodépôts
Découvrez des stratégies pour optimiser les pipelines d’intégration et de livraison continues dans les monodépôts, notamment l’exécution sélective des tâches selon les fichiers modifiés.
Intégration et livraison continues pour les monodépôts est une leçon CI/CD with GitHub Actions & DevOps Pipelines gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CI/CD with GitHub Actions & DevOps Pipelines, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CI/CD with GitHub Actions & DevOps Pipelines comprend 4 leçons au total.
Qu'est-ce qu'un dépôt unique ?
Un dépôt unique est un dépôt qui contient le code de nombreux projets ou applications. Au lieu d'avoir un dépôt distinct pour chaque service ou bibliothèque, tout est regroupé au même endroit.
Imaginez une grande bibliothèque contenant de nombreux livres (les projets) dans un seul bâtiment (le dépôt), plutôt qu'un bâtiment distinct pour chaque livre. Cette approche présente des avantages et des inconvénients, notamment pour l'intégration et la livraison continues (CI/CD).
Défis de la CI/CD dans un dépôt unique
Bien que les dépôts uniques offrent des avantages, comme un partage plus facile du code, ils peuvent poser des difficultés pour les chaînes d'intégration et de livraison continues (CI/CD) :
- Compilations lentes : Si chaque modification déclenche une compilation complète et une suite complète de vérifications pour *tous les projets*, les chaînes deviennent très lentes.
- Gaspillage de ressources : L'exécution inutile de tâches sans rapport consomme des minutes de compilation et des ressources.
- Frustration des développeurs : De longs cycles de retour peuvent ralentir le rythme de développement.
La nécessité d'une CI/CD sélective
La clé d'une CI/CD efficace dans un dépôt unique est la sélectivité. Nous voulons que nos chaînes soient suffisamment intelligentes pour :
- Identifier *ce qui* a changé.
- Exécuter les tâches CI/CD *uniquement* pour les projets concernés par ces modifications.
Cette approche permet de gagner du temps, de réduire la consommation de ressources et de fournir plus rapidement un retour aux développeurs.
Déclenchement par chemins : `on.paths`
GitHub Actions fournit un moyen puissant d'obtenir cette sélectivité grâce au filtre paths dans les déclencheurs de votre flux de travail. Vous pouvez spécifier les répertoires ou les fichiers qui, lorsqu'ils sont modifiés, doivent déclencher un flux de travail.
Si un fichier situé en dehors de ces chemins est modifié, le flux de travail ne s'exécutera pas. C'est idéal pour les dépôts uniques !
on:
push:
branches:
- main
paths:
- 'apps/frontend/**'
- 'libs/shared/**'Le filtre de chemins en action
Voici un flux de travail simple qui ne s'exécute que lorsque des modifications sont envoyées vers des fichiers situés dans le répertoire apps/backend ou vers un fichier README.md spécifique.
Cela garantit que seules les vérifications ou compilations pertinentes sont déclenchées pour votre service côté serveur.
name: Backend CI
on:
push:
branches:
- main
paths:
- 'apps/backend/**'
- 'README.md'
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build backend app
run: echo "Building backend..."Ignorer les chemins : `paths-ignore`
Parfois, vous souhaitez qu'un flux de travail s'exécute pour *la plupart* des modifications, mais qu'il soit ignoré si seuls certains fichiers sont modifiés (par exemple, la documentation ou les fichiers journaux). Le filtre paths-ignore est idéal dans ce cas.
Il fonctionne de manière similaire à paths, mais indique les fichiers qui ne doivent *pas* déclencher le flux de travail.
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
- '**/*.md'Exécutions sélectives dynamiques avec `git diff`
Pour une logique plus complexe, vous pouvez utiliser des commandes Git comme git diff dans les étapes de votre flux de travail afin de vérifier dynamiquement les modifications. Cela vous permet de créer des conditions personnalisées.
Par exemple, vous pouvez vérifier si des modifications ont été effectuées dans un dossier précis et définir une variable de sortie pour décider si une tâche ultérieure doit s'exécuter.
Exemple d'exécution conditionnelle d'une tâche
Cette étape du flux de travail utilise git diff pour vérifier si des fichiers situés sous apps/api/ ont été modifiés entre la validation actuelle et la branche de base. Si c'est le cas, elle définit la variable de sortie api_changed sur 'true'.
Cette sortie peut ensuite déterminer si la tâche « déployer l’API » s’exécute.
jobs:
check-changes:
runs-on: ubuntu-latest
outputs:
api_changed: ${{ steps.diff.outputs.api_changed }}
steps:
- uses: actions/checkout@v4
- name: Check API changes
id: diff
run: |
if git diff --quiet ${{ github.event.before }} ${{ github.sha }} -- apps/api/;
then
echo "api_changed=false" >> $GITHUB_OUTPUT
else
echo "api_changed=true" >> $GITHUB_OUTPUT
fi
deploy-api:
needs: check-changes
if: needs.check-changes.outputs.api_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Deploy API
run: echo "Deploying API..."Structure d'un dépôt unique pour la CI/CD
Une structure organisée de dépôt unique simplifie considérablement la CI/CD sélective. Le regroupement des fichiers et des projets associés dans des répertoires clairement définis facilite l'utilisation efficace des filtres paths.
/apps/frontend/apps/backend/libs/shared/docs
Une séparation claire permet de cibler précisément les flux de travail.
Questionnaire CI/CD sur les dépôts uniques
Optimiser la CI/CD pour les dépôts uniques est essentiel pour préserver le rythme de développement et utiliser efficacement les ressources. Réfléchissez aux stratégies qui répondent le mieux aux défis posés par une base de code vaste et regroupée.
Récapitulatif et prochaines étapes
Vous avez appris à relever les défis de la CI/CD dans les dépôts uniques en mettant en œuvre une exécution sélective des tâches. Grâce aux filtres paths de GitHub Actions et aux techniques avancées de git diff, vous pouvez garantir que vos chaînes n'exécutent que le nécessaire.
Vous obtenez ainsi un retour plus rapide, des coûts réduits et une expérience de développement plus fluide. Continuez à explorer les moyens d'affiner vos flux de travail pour gagner encore en efficacité !
Apprends CI/CD with GitHub Actions & DevOps Pipelines avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 12
- Leçons
- 48
Questions Fréquemment Posées
La leçon « Intégration et livraison continues pour les monodépôts » est-elle gratuite ?
Oui — le texte complet de « Intégration et livraison continues pour les monodépôts » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CI/CD with GitHub Actions & DevOps Pipelines, passe à CoddyKit PRO. Le cours CI/CD with GitHub Actions & DevOps Pipelines comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Intégration et livraison continues pour les monodépôts » ?
Découvrez des stratégies pour optimiser les pipelines d’intégration et de livraison continues dans les monodépôts, notamment l’exécution sélective des tâches selon les fichiers modifiés. Tu pratiques CI/CD with GitHub Actions & DevOps Pipelines avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer CI/CD with GitHub Actions & DevOps Pipelines ?
Aucune expérience préalable n'est requise. CI/CD with GitHub Actions & DevOps Pipelines sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Intégration et livraison continues pour les monodépôts » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon CI/CD with GitHub Actions & DevOps Pipelines ?
Oui. Chaque leçon CI/CD with GitHub Actions & DevOps Pipelines inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Intégration et livraison continues pour les monodépôts
- Flux de travail entre dépôts
- Gestion centralisée des flux de travail
- Filtrage des chemins et compilations sélectives