Github Actions
Ci Cd
Pipeline
Devops
Yaml
Docker
Intégration Continue
Générateur de pipeline GitHub Actions
📋 Workflow
⚡ Déclencheurs
🏗️ Environnement
🔧 Étapes CI
🐳 Docker (optionnel)
🚀 Déploiement (optionnel)
.github/workflows/ci.yml
Créez un workflow GitHub Actions complet : déclencheurs, cache, tests, build, Docker, déploiement SSH/S3/Heroku/Pages. Supporte Node.js, Python, PHP, Go, Java et Ruby.
GitHub Actions : principes
GitHub Actions est le système CI/CD intégré à GitHub. Un workflow est un fichier YAML dans .github/workflows/ qui décrit les tâches automatisées.
| Concept | Description |
|---|---|
| Workflow | Fichier YAML dans .github/workflows/ |
| Event (on:) | Déclencheur : push, pull_request, schedule… |
| Job | Groupe d'étapes qui s'exécute sur un runner |
| Step | Commande shell ou action réutilisable |
| Action | Brique réutilisable (ex: actions/checkout@v4) |
| Runner | Machine virtuelle (ubuntu, windows, macos) |
Syntaxe YAML essentielle
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Installer les dépendances
run: npm ci
- name: Tests
run: npm test
- name: Build
run: npm run build
Contextes et expressions
Les contextes donnent accès aux métadonnées du workflow via la syntaxe ${{ expression }} :
| Contexte | Exemple | Description |
|---|---|---|
github | ${{ github.ref }} | Branche / tag courant |
github | ${{ github.sha }} | Hash du commit |
github | ${{ github.actor }} | Utilisateur déclencheur |
secrets | ${{ secrets.MY_SECRET }} | Secret du repo |
env | ${{ env.MY_VAR }} | Variable d'environnement |
steps | ${{ steps.my-step.outputs.value }} | Output d'une étape |
Gérer les secrets
Les secrets sont chiffrés et injectés comme variables d'environnement. Ne jamais les afficher dans les logs :
- name: Deploy via SSH
env:
SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_HOST: ${{ secrets.SSH_HOST }}
run: |
mkdir -p ~/.ssh
echo "$SSH_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan "$SSH_HOST" >> ~/.ssh/known_hosts
rsync -avz dist/ user@$SSH_HOST:/var/www/html/
Où définir les secrets ? Settings → Secrets and variables → Actions → New repository secret.
Build matrix
Testez sur plusieurs versions ou OS en parallèle avec une stratégie de matrice :
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
node: ['18', '20', '22']
fail-fast: false # continue si une combinaison échoue
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci && npm test
Bonnes pratiques
- ✅ Épingler les versions des actions :
actions/checkout@v4(pas@main) - ✅ Utiliser le cache pour les dépendances (npm, pip, Maven…)
- ✅ Séparer CI et CD en jobs distincts avec
needs: - ✅ Utiliser
concurrencypour annuler les runs obsolètes sur PR - ✅ Limiter les permissions :
permissions: contents: read - ✅ Ne jamais afficher un secret dans un
echoourun
Coût : GitHub Actions est gratuit pour les repos publics. Les repos privés ont un quota mensuel de minutes incluses selon le plan.