DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesCréer son premier pipeline CI/CD avec GitHub Actions05 - Utiliser les variables et le contexte GitHub

Détails

  • 15 minutes
  • Débutant

Objectifs

  • Accéder aux métadonnées du contexte GitHub (sha, ref_name, actor)
  • Définir des variables d'environnement avec env: dans un step
  • Exporter des variables entre steps avec $GITHUB_ENV
  • Enrichir le résumé d'un job avec $GITHUB_STEP_SUMMARY
Module Créer son premier pipeline CI/CD avec GitHub Actions

Exercice 05 : Utiliser les variables et le contexte GitHub

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Utiliser ${{ github.sha }}, ${{ github.ref_name }} et ${{ github.actor }} dans un workflow
  • ✅ Déclarer des variables locales avec env: dans un step
  • ✅ Partager une variable entre steps via $GITHUB_ENV
  • ✅ Écrire un résumé de job visible dans l'onglet Actions avec $GITHUB_STEP_SUMMARY

Durée estimée : 15 min | Difficulté : ⭐⭐⭐☆☆


📖 Contexte

GitHub Actions expose deux types d'informations dynamiques dans vos workflows :

Le contexte GitHub (github.*) : métadonnées sur l'événement déclencheur - qui a poussé le code, quelle branche, quel commit. Syntaxe : ${{ github.sha }}.

Les variables d'environnement spéciales : des fichiers écrits dans le runner qui permettent de transmettre des données entre steps.

VariableDescription
${{ github.sha }}Hash complet du commit (40 caractères)
${{ github.ref_name }}Nom court de la branche ou du tag
${{ github.actor }}Nom d'utilisateur GitHub qui a déclenché le workflow
$GITHUB_ENVFichier pour exporter des variables vers les steps suivants
$GITHUB_STEP_SUMMARYFichier pour écrire du Markdown dans le résumé du job

📋 Énoncé

Vous allez créer un workflow de diagnostic qui affiche les informations du contexte GitHub, calcule dynamiquement une variable d'environnement (tag d'image Docker), la transmet aux steps suivants et génère un résumé Markdown du build.


🧭 Déroulement

Tâche 1 : Afficher les variables de contexte

Créez .github/workflows/contexte.yml. Ajoutez un step qui affiche github.sha, github.ref_name et github.actor via echo.

Indice :

`yaml

- name: Afficher le contexte

run: |

echo "SHA du commit : ${{ github.sha }}"

echo "Branche : ${{ github.ref_name }}"

echo "Déclenché par : ${{ github.actor }}"

`

Les expressions ${{ ... }} sont évaluées avant l'exécution du shell. Elles sont remplacées par leur valeur dans le YAML final envoyé au runner.

Vérification : Les logs affichent le vrai hash du commit (40 caractères), le nom de votre branche et votre nom d'utilisateur GitHub.


Tâche 2 : Déclarer une variable avec env: dans un step

Ajoutez un step avec env: pour définir une variable locale APP_VERSION combinant la branche et les 8 premiers caractères du SHA. Affichez-la avec echo $APP_VERSION.

Indice :

`yaml

- name: Définir la version de l'app

env:

APP_VERSION: "${{ github.ref_name }}-${{ github.sha }}"

run: echo "Version : $APP_VERSION"

`

Les variables définies avec env: dans un step ne sont disponibles que dans ce step. Pour les partager, utilisez $GITHUB_ENV.

Vérification : Le step affiche quelque chose comme Version : main-a1b2c3d4e5....


Tâche 3 : Exporter une variable avec $GITHUB_ENV

Créez un step qui calcule un tag d'image Docker IMAGE_TAG (format branche-8charsdesha) et l'exporte vers les steps suivants via $GITHUB_ENV. Créez ensuite un step séparé qui utilise $IMAGE_TAG.

Indice :

`yaml

- name: Calculer le tag Docker

run: |

SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-8)

IMAGE_TAG="${{ github.ref_name }}-${SHORT_SHA}"

echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_ENV

>

- name: Utiliser le tag Docker

run: echo "Image Docker : monapp:$IMAGE_TAG"

`

echo "NOM=valeur" >> $GITHUB_ENV écrit dans un fichier spécial que GitHub Actions lit entre chaque step pour mettre à jour les variables d'environnement.

Vérification : Le second step affiche le tag calculé dans le premier step. Exemple : monapp:main-a1b2c3d.


Tâche 4 : Écrire un résumé avec $GITHUB_STEP_SUMMARY

Ajoutez un step final qui écrit un résumé Markdown du build dans $GITHUB_STEP_SUMMARY. Ce résumé sera affiché directement sur la page du run dans l'onglet Actions.

Indice :

`yaml

- name: Résumé du build

run: |

echo "## Résumé du Build 🚀" >> $GITHUB_STEP_SUMMARY

echo "" >> $GITHUB_STEP_SUMMARY

echo "| Champ | Valeur |" >> $GITHUB_STEP_SUMMARY

echo "|-------|--------|" >> $GITHUB_STEP_SUMMARY

echo "| Branche | \${{ github.ref_name }}\ |" >> $GITHUB_STEP_SUMMARY

echo "| Commit | \${{ github.sha }}\ |" >> $GITHUB_STEP_SUMMARY

echo "| Acteur | @${{ github.actor }} |" >> $GITHUB_STEP_SUMMARY

echo "| Image | \monapp:$IMAGE_TAG\ |" >> $GITHUB_STEP_SUMMARY

`

$GITHUB_STEP_SUMMARY accepte du Markdown. Le contenu s'affiche dans l'encadré "Summary" en haut de la page du run.

Vérification : La page du run GitHub Actions affiche un tableau Markdown avec les 4 informations dans la section "Summary".


Tâche 5 : Conditionner un step selon la branche

Ajoutez un step qui s'exécute uniquement sur la branche main en utilisant une condition if: basée sur github.ref_name.

Indice :

`yaml

- name: Étape réservée à main

if: github.ref_name == 'main'

run: echo "Ce step ne s'exécute que sur main"

`

if: accepte des expressions GitHub Actions. Sans ${{ }}, l'expression est évaluée automatiquement.

Vérification : En poussant sur main, le step s'exécute. En poussant sur une autre branche, il est ignoré (icône grisée "skipped").


🗂️ Mini-Projet

Créez un workflow complet qui génère un badge de statut dans le résumé : vert si c'est un push sur main, jaune sinon.

bash
# Checkpoints à valider :
# [ ] github.sha, github.ref_name, github.actor affichés dans les logs
# [ ] env: dans un step définit une variable locale
# [ ] $GITHUB_ENV transmet une variable entre deux steps
# [ ] $GITHUB_STEP_SUMMARY affiche un tableau Markdown dans le résumé du run
# [ ] if: github.ref_name == 'main' conditionne correctement un step
# [ ] Bonus : badge dynamique dans le résumé

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement
  • Tâche 1 : Afficher les variables de contexte
  • Tâche 2 : Déclarer une variable avec env: dans un step
  • Tâche 3 : Exporter une variable avec $GITHUB_ENV
  • Tâche 4 : Écrire un résumé avec $GITHUB_STEP_SUMMARY
  • Tâche 5 : Conditionner un step selon la branche
  • 🗂️ Mini-Projet