Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 159 minIntermédiaire

Aide-mémoire CI/CD : GitHub Actions et GitLab CI

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • retrouver vite une clé ou une commande de GitHub Actions et de GitLab CI ;
  • vérifier la version à jour d'une action officielle ;
  • réviser le vocabulaire de la CI/CD.

Cet aide-mémoire regroupe la syntaxe de GitHub Actions et de GitLab CI, les actions officielles et leurs versions, les commandes utiles et le vocabulaire de l'intégration et du déploiement continus. Il sert à retrouver vite une clé ou une commande, et à réviser avant un oral ou un contrôle. Chaque ligne renvoie au chapitre qui l'explique.

Le squelette d'un workflow GitHub Actions

yaml
name: CI                                   # nom affiché
on:                                        # déclencheurs
  push:
    branches: [main]
  pull_request:
permissions:                               # droits du GITHUB_TOKEN
  contents: read
concurrency:                               # une exécution par branche
  group: ci-${{ github.ref }}
  cancel-in-progress: true
jobs:
  tests:                                   # identifiant du job
    runs-on: ubuntu-latest                 # machine
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@v7          # récupérer le code
      - uses: actions/setup-node@v7        # installer Node.js
        with:
          node-version: 24
          cache: npm
      - run: npm ci                        # installer les dépendances
      - run: npm test -- --ci              # tester

Les clés de GitHub Actions

NiveauCléRôleChapitre
WorkflowonÉvénements déclencheurs3
Workflow, jobpermissionsDroits du jeton8
Workflow, jobconcurrencyÉviter les exécutions simultanées3
Workflow, job, étapeenvVariables d'environnement3
Jobruns-onMachine3
JobneedsJobs à attendre3
Job, étapeifCondition3
Jobstrategy.matrixVariantes en parallèle4
JobservicesConteneurs annexes (base de données)6
JobenvironmentEnvironnement de déploiement10
JoboutputsValeurs pour les jobs suivants3
JobusesAppeler un workflow réutilisable4
Étapeuses et withAction et ses paramètres3
Étaperun, shell, working-directoryCommande3
Étape, jobcontinue-on-errorNe pas échouer pour cette étape3
Job, étapetimeout-minutesDurée maximale3

Déclencheurs, conditions et fichiers spéciaux

BesoinÉcriture
Chaque pull requeston: pull_request
Chaque push sur mainon: push: branches: [main]
Chaque tag de versionon: push: tags: ['v*.*.*']
Ignorer la documentationpaths-ignore: ['docs/**', '**.md']
Lancement manuelon: workflow_dispatch (avec inputs)
Chaque nuit à 1 h UTCon: schedule: - cron: '0 1 * * *'
Chaque nuit à 2 h, heure de Paris- cron: '0 2 * * *' puis timezone: Europe/Paris
Seulement après une fusion sur mainif: github.event_name == 'push' && github.ref == 'refs/heads/main'
Seulement pour un tagif: startsWith(github.ref, 'refs/tags/v')
Toujours, même après un échecif: always()
Seulement après un échecif: failure()
Variable pour les étapes suivantesecho "NOM=valeur" >> "$GITHUB_ENV"
Sortie d'une étapeecho "nom=valeur" >> "$GITHUB_OUTPUT", lue par steps.<id>.outputs.nom
Résumé de l'exécutionecho "### Titre" >> "$GITHUB_STEP_SUMMARY"
Masquer une valeur calculéeecho "::add-mask::$VALEUR"

Les contextes

ContexteExemples
githubgithub.sha, github.ref, github.ref_name, github.event_name, github.actor, github.repository
secrets, varssecrets.DEPLOY_SSH_KEY, secrets.GITHUB_TOKEN, vars.URL_RECETTE
matrixmatrix.node, matrix.os
steps, needssteps.meta.outputs.tags, needs.image.outputs.tag, needs.tests.result
inputsinputs.environnement
runnerrunner.os, runner.temp

Les actions officielles et leurs versions (novembre 2026)

ActionVersionRôle
actions/checkoutv7Récupérer le code
actions/setup-node, actions/setup-pythonv7Installer Node.js, Python (avec cache)
actions/setup-java, actions/setup-dotnetv6Installer Java, .NET
actions/cachev6Cache générique
actions/upload-artifactv7Envoyer un artefact
actions/download-artifactv8Récupérer un artefact
actions/dependency-review-actionv5Bloquer les dépendances vulnérables d'une pull request
github/codeql-action/init, analyzev4Analyse de code CodeQL
actions/configure-pages, actions/upload-pages-artifact, actions/deploy-pagesv6, v5, v5Publier sur GitHub Pages
actions/attest-build-provenancev4Attestation de provenance
docker/setup-buildx-action, docker/login-actionv4Préparer Buildx, se connecter à un registre
docker/metadata-actionv6Calculer les étiquettes d'image
docker/build-push-actionv7Construire et pousser une image

Les actions d'autres éditeurs s'épinglent sur l'empreinte complète d'un commit, avec la version en commentaire (la sécurité du pipeline).

Les mots-clés de GitLab CI

Mot-cléRôle
stagesOrdre des stages (par défaut build, test, deploy)
stage, image, scriptStage du job, image Docker, commandes
before_script, after_scriptCommandes avant et après
rules: - if:Conditions de création du job
workflow: rules:Conditions de création du pipeline
needsDémarrer dès que certains jobs ont réussi
artifacts: paths, expire_in, reportsFichiers conservés, rapports JUnit et couverture
cache: key, pathsFichiers gardés entre pipelines
servicesConteneurs annexes
environment: name, urlEnvironnement de déploiement
when: manualJob lancé par un clic
extends, default, includeRéutilisation
releaseCréer une release sur un tag

Variables prédéfinies utiles : CI_PIPELINE_SOURCE, CI_COMMIT_BRANCH, CI_COMMIT_TAG, CI_DEFAULT_BRANCH, CI_COMMIT_SHA, CI_COMMIT_SHORT_SHA, CI_REGISTRY, CI_REGISTRY_IMAGE, CI_REGISTRY_USER, CI_REGISTRY_PASSWORD, CI_JOB_TOKEN, CI_PROJECT_DIR.

Les commandes utiles

CommandeRôle
npm ciInstaller exactement le package-lock.json
npm audit --audit-level=highÉchouer si une dépendance a une faille haute ou critique
npm version patch, minor, majorChanger le numéro, commiter, créer le tag
git push --follow-tagsPousser les commits et leurs tags
gh run list, gh run watch, gh run view --log-failedSuivre les exécutions et lire les journaux en échec
gh run rerun --failedRelancer les jobs en échec
gh workflow run deploy.yml -f environnement=recetteLancer un workflow_dispatch
gh secret set NOM, gh variable set NOMCréer un secret, une variable
gh release create v2.5.0 --generate-notesCréer une release
docker build -t image:etiquette .Construire une image
docker compose pull puis docker compose up -dMettre à jour les conteneurs d'un serveur
curl --fail --retry 5 --retry-all-errors URLTest de fumée qui échoue sur une erreur HTTP
shellcheck script.shVérifier un script Bash

Le vocabulaire

TermeDéfinition
Intégration continue (CI)Intégrer souvent dans la branche commune, et vérifier automatiquement chaque intégration
Livraison continueChaque version validée est prête à partir en production ; la mise en production reste une décision humaine
Déploiement continuChaque version validée part automatiquement en production
PipelineLa suite automatisée d'étapes du commit à la livraison
WorkflowUn fichier de pipeline de GitHub Actions
Job, étapeUn groupe d'étapes sur une machine ; une commande ou une action
RunnerLa machine qui exécute un job
ArtefactUn fichier produit par le pipeline et conservé : archive, image, rapport
CacheDes fichiers gardés entre les exécutions pour gagner du temps
MatriceLe même job lancé pour plusieurs valeurs (versions, systèmes)
Échec rapide (fail fast)Les vérifications rapides d'abord, arrêt au premier échec
Protection de branche, rulesetDes règles qui imposent pull request, revue et contrôles verts avant la fusion
SecretUne valeur sensible, chiffrée, injectée à l'exécution, masquée dans les journaux
OIDCUne authentification par jeton temporaire, sans secret permanent
SAST, SCA, DASTAnalyse du code source, des dépendances, de l'application en fonctionnement
EnvironnementUne installation de l'application pour un usage : recette, production
Recette (staging)L'environnement de validation avant la production
Test de fuméeUne vérification rapide qu'un service déployé répond
PromotionDéployer la même image d'un environnement au suivant, sans la reconstruire
Bleu-vert, canari, progressifStratégies de déploiement sans coupure
Interrupteur de fonctionnalitéUne fonctionnalité activée ou coupée par la configuration, sans redéploiement
Retour arrière (rollback)Remettre en service la dernière version qui fonctionnait
Infrastructure as codeDécrire l'infrastructure dans des fichiers versionnés, appliqués par un outil
SemVerNumérotation MAJEUR.MINEUR.CORRECTIF
ReleaseLa publication d'une version attachée à un tag, avec ses notes et ses fichiers
DORALes quatre indicateurs classiques : fréquence de déploiement, délai de mise en production, taux d'échec des changements, temps de rétablissement (plus, depuis 2024, le taux de reprise)

Chapitre terminé !

Tu as lu ce chapitre jusqu'au bout. Passe au suivant tant que c'est frais.

chapitres
–
de série
–
du cours
–
Cours suivant : ArithmétiqueRevoir le sommaire du cours