Exécution conditionnelle et dépendances entre tâches
Contrôlez le moment où les étapes et les tâches s’exécutent à l’aide des conditions if, du mot-clé needs, des expressions et des fonctions de vérification d’état dans les flux de travail GitHub Actions.
Exécution conditionnelle et dépendances entre tâches est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 4 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 DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Pourquoi les conditions sont importantes
Toutes les étapes ne doivent pas être exécutées à chaque fois. Vous pouvez vouloir qu’une étape de déploiement s’exécute uniquement sur la branche main, ou qu’une étape de notification s’exécute uniquement lorsqu’un problème est survenu.
GitHub Actions vous permet d’associer une condition if à n’importe quelle étape ou tâche afin de contrôler son exécution.
La clé if
Ajoutez une clé if: à une étape. L’étape ne s’exécute que lorsque l’expression est évaluée comme vraie.
Les expressions placées dans if n’ont pas besoin de l’enveloppe ${{ }}, même si celle-ci est autorisée.
steps:
- name: Deploy
if: github.ref == 'refs/heads/main'
run: ./deploy.shObjets de contexte
Les conditions sont lues à partir d’objets de contexte qui décrivent l’exécution :
github— événement, référence, acteur, shaenv— variables d’environnementjobetsteps— état des travaux précédentsrunner— OS et architecture
Par exemple, github.event_name vous indique si un push ou une pull_request a déclenché l’exécution.
Fonctions de vérification de l’état
Par défaut, une étape est ignorée si une étape précédente a échoué. Pour remplacer ce comportement, utilisez les fonctions d’état :
success()— vrai si aucune étape précédente n’a échoué (valeur par défaut)failure()— vrai si une étape précédente a échouéalways()— s’exécute quoi qu’il arrivecancelled()— vrai si l’exécution a été annulée
- name: Notify on failure
if: failure()
run: echo 'Build failed, sending alert'Toujours exécuter le nettoyage
Un schéma courant consiste à ajouter une étape de nettoyage qui doit s’exécuter même si des étapes précédentes ont échoué. Utilisez if: always().
Cela garantit que les ressources temporaires, les conteneurs ou les rapports de test sont traités quel que soit le résultat.
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: ./logsDépendances entre tâches avec needs
Le mot-clé needs oblige une tâche à attendre les autres. Sans lui, les tâches s’exécutent en parallèle.
Une tâche indiquée dans needs doit se terminer correctement avant le démarrage de la tâche dépendante.
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- run: ./deploy.shDépendances multiples
Une tâche peut dépendre de plusieurs autres tâches en transmettant une liste à needs. Elle attend qu’elles soient toutes terminées.
C’est ainsi que vous construisez des schémas de convergence, dans lesquels une tâche finale ne s’exécute qu’après la réussite de toutes les tâches parallèles.
release:
needs: [lint, test, build]
runs-on: ubuntu-latest
steps:
- run: echo 'all checks passed'Tâches conditionnelles
La clé if fonctionne également avec les tâches, et pas seulement avec les étapes. Une condition au niveau de la tâche détermine si la tâche entière s’exécute.
Ici, la tâche de déploiement ne s’exécute que pour les push vers main, tout en dépendant des tests.
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- run: ./deploy.shUtiliser les sorties des tâches
Les tâches peuvent transmettre des données aux tâches en aval via outputs. Une tâche dépendante les lit dans le contexte needs.
Une condition peut ainsi dépendre d’une valeur calculée précédemment, par exemple pour déterminer si une version a changé.
check:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.diff.outputs.changed }}
steps:
- id: diff
run: echo 'changed=true' >> $GITHUB_OUTPUTCombiner les conditions
Vous pouvez combiner des expressions avec && (et), || (ou) et ! (non).
Cet exemple ne s’exécute qu’à la suite d’un push réussi vers main qui ne provient pas d’un dépôt dérivé.
if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'Exécution inconditionnelle avec needs
Attention : une tâche utilisant needs est ignorée si une dépendance échoue. Pour exécuter une tâche finale de génération de rapports dans tous les cas, combinez needs avec if: always().
À l’intérieur, vous pouvez examiner needs.<job>.result pour déterminer ce qu’il faut signaler.
report:
needs: [test, build]
if: always()
runs-on: ubuntu-latest
steps:
- run: echo ${{ needs.test.result }}Vérification rapide
Vérifiez votre compréhension de l’exécution conditionnelle.
Récapitulatif
Vous avez appris à contrôler le flux d’exécution avec les conditions et les dépendances.
ifconditionne les étapes et les tâches à partir d’expressions- Les fonctions d’état comme
failure()etalways()permettent de remplacer l’omission en cas d’échec needscrée des ordres d’exécution et des schémas de convergence- Les
outputsdes tâches fournissent des valeurs aux conditions suivantes
Ces mécanismes vous permettent de construire des chaînes d’exécution précises et efficaces.
Questions Fréquemment Posées
La leçon « Exécution conditionnelle et dépendances entre tâches » est-elle gratuite ?
Oui — le texte complet de « Exécution conditionnelle et dépendances entre tâches » 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 DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Exécution conditionnelle et dépendances entre tâches » ?
Contrôlez le moment où les étapes et les tâches s’exécutent à l’aide des conditions if, du mot-clé needs, des expressions et des fonctions de vérification d’état dans les flux de travail GitHub Actio… Tu pratiques DevOps Bootcamp 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 DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp 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 4 sur 4.
Combien de temps prend la leçon « Exécution conditionnelle et dépendances entre tâches » ?
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 DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp 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
- Générations matricielles pour plusieurs environnements
- Mise en cache des dépendances pour accélérer l’exécution
- Flux de travail et actions réutilisables
- Exécution conditionnelle et dépendances entre tâches