1. L’architecture de GitHub Actions

Intégré directement au cœur de la plateforme GitHub, GitHub Actions automatise les flux de travail à l’aide de fichiers YAML logés dans le répertoire .github/workflows/ :

  • Workflow : Processus automatisé autonome composé d’un ou plusieurs jobs.
  • Events (Événements déclencheurs) : Événements Git déclenchant l’exécution (push, pull_request, release, ou planification horaire schedule).
  • Jobs & Steps : Un job s’exécute sur une machine virtuelle dédiée (Runner). Les étapes (steps) se succèdent séquentiellement.

2. Conception d’un workflow industriel complet

# Fichier : .github/workflows/pipeline-ci-cd.yml
name: Pipeline CI/CD Éducasuisse

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  qualite-et-tests:
    runs-on: ubuntu-latest
    steps:
      - name: Récupération du code source
        uses: actions/checkout@v4

      - name: Configuration de l'environnement Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Installation des dépendances
        run: npm ci

      - name: Exécution du linter
        run: npm run lint

      - name: Lancement des tests unitaires avec couverture
        run: npm test -- --coverage

  build-et-publication:
    needs: qualite-et-tests
    if: github.ref == 'refs/heads/main' && github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Connexion au registre de conteneurs
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Construction et publication de l'image Docker
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ghcr.io/${{ github.repository }}:latest,${{ github.sha }}

3. Sécurisation absolue des données sensibles

Ne commitez jamais de jetons API ou de mots de passe de bases de données dans Git. Utilisez l’espace GitHub Actions Encrypted Secrets et injectez-les via le contexte ${{ secrets.NOM_DU_SECRET }}. Ces valeurs sont automatiquement masquées (***) dans l’ensemble des journaux d’exécution.

Runners auto-hébergés (Self-Hosted Runners) : Pour les entreprises suisses soumises au secret professionnel ou manipulant des données hautement confidentielles, configurez des exécuteurs de pipelines au sein de vos propres serveurs locaux afin que le code source ne quitte jamais votre infrastructure souveraine.