đ§âđ» TP GitHub Actions â Appel de Workflow (30â45 min) đŻ Objectifs pĂ©dagogiques Comprendre et utiliser les workflows rĂ©utilisables (workflow_call). Savoir passer des paramĂštres dâun workflow Ă un autre. Afficher dynamiquement des messages dans les logs GitHub Actions. Savoir structurer un projet avec plusieurs workflows. Mettre en place une logique conditionnelle simple dans un job. â±ïž DurĂ©e estimĂ©e 30 Ă 45 minutes, en fonction du rythme et des extensions rĂ©alisĂ©es.
đ ïž Ătapes du TP
-
CrĂ©er un dĂ©pĂŽt GitHub (si ce nâest pas dĂ©jĂ fait) Tu peux travailler sur un dĂ©pĂŽt existant ou en crĂ©er un nouveau.
-
Créer un workflow enfant réutilisable Dans le dossier .github/workflows/child.yml, créer un fichier contenant :
name: Child Workflow
on: workflow_call: inputs: name: required: true type: string time: required: false type: string default: "day"
jobs:
greet:
runs-on: ubuntu-latest
steps:
- name: Display greeting
run: |
if [ "${{ inputs.time }}" = "morning" ]; then
echo "Good morning,
Un workflow workflow_call Utilisation de plusieurs inputs Logique conditionnelle dans un run 3. Créer un workflow parent Dans .github/workflows/parent.yml, créer un fichier contenant :
name: Parent Workflow
on: workflow_dispatch: # déclenchable manuellement
jobs: call-child-morning: uses: ./.github/workflows/child.yml with: name: "Alice" time: "morning"
call-child-evening: uses: ./.github/workflows/child.yml with: name: "Bob" time: "evening" â Ce quâon apprend ici :
Utiliser workflow_dispatch (dĂ©clenchement manuel) Appeler deux fois un mĂȘme workflow avec des paramĂštres diffĂ©rents RĂ©utiliser un workflow dans plusieurs jobs 4. Lancer le TP Pousse les deux fichiers dans ton repo. Va dans Actions > Parent Workflow > Run workflow. Observe les logs :
Tu devrais voir deux jobs (call-child-morning et call-child-evening). Chacun affiche une salutation diffĂ©rente. đ§ Bonus (si temps disponible) đ Challenge 1 : demander les inputs Ă lâutilisateur Remplace les appels dans parent.yml par un seul, avec des inputs dynamiques :
on: workflow_dispatch: inputs: user_name: description: "Nom de l'utilisateur" required: true default: "Charlie" moment: description: "Moment de la journée (morning, evening, day)" required: false default: "day"
jobs:
call-child:
uses: ./.github/workflows/child.yml
with:
name:
đ§Œ Challenge 2 : ajouter un job de nettoyage Ă la fin (factice) Dans le parent.yml, ajoute un job final :
cleanup: runs-on: ubuntu-latest needs: call-child steps: - run: echo "Cleaning up after the greeting..." Parfait ! On peut ajouter une Ă©tape supplĂ©mentaire dans le TP pour montrer comment rĂ©cupĂ©rer et utiliser un output dâun workflow enfant. Voici comment tu peux intĂ©grer ça :
- Bonus â Tester un output depuis le workflow enfant 1ïžâŁ Ajouter un output dans le workflow enfant (child.yml) On va modifier le job greet pour quâil renvoie le message de salutation comme output :
jobs:
greet:
runs-on: ubuntu-latest
outputs:
greeting-message:
- name: Display greeting
run: echo "${{ steps.greeting.outputs.message }}"
â Ce quâon apprend ici :
DĂ©finir un output dâun job (outputs + steps.id.outputs) Propager des valeurs vers le workflow parent 2ïžâŁ RĂ©cupĂ©rer lâoutput dans le workflow parent (parent.yml) jobs: call-child: uses: ./.github/workflows/child.yml with: name: "Dana" time: "morning"
display-output: runs-on: ubuntu-latest needs: call-child steps: - run: echo "Le workflow enfant a renvoyĂ© : ${{ needs.call-child.outputs.greeting-message }}" â Ce quâon apprend ici :
Attendre quâun job enfant soit terminĂ© (needs) RĂ©cupĂ©rer et afficher un output dans le parent 3ïžâŁ Test pratique Pousser les modifications dans ton repo. Lancer le workflow parent. Observer le job display-output qui montre le message provenant du workflow enfant.