Github Actions
Ci Cd
Pipeline
Devops
Yaml
Docker
Integration Continue
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.
Générateur de pipeline GitHub Actions
📋 Workflow
⚡ Déclencheurs
🏗️ Environnement
🔧 Étapes CI
🐳 Docker (optionnel)
🚀 Déploiement (optionnel)
.github/workflows/ci.yml
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.
Questions fréquentes
Choisissez votre langage ou framework (Node.js, Angular, React, Python, Docker, PHP), selectionnez les triggers (push, pull_request, schedule), configurez les jobs souhaites (install, lint, test, build, deploy) et les branches cibles. L\'outil genere un fichier YAML valide a placer dans .github/workflows/ de votre depot.
Le generateur supporte plusieurs strategies de deploiement : SSH vers un serveur distant (rsync), push vers GitHub Pages, deploiement sur AWS (S3, Elastic Beanstalk), Google Cloud Run, DigitalOcean App Platform, et publication de packages npm. Les secrets sont references via ${{ secrets.NOM_SECRET }}.
L\'outil peut inclure l\'action actions/cache pour mettre en cache node_modules/ (base sur package-lock.json) ou .venv Python (base sur requirements.txt). Cela reduit significativement le temps d\'execution des workflows en evitant de retelecharger les dependances a chaque execution.
Oui, les workflows generes utilisent uniquement des runners ubuntu-latest fournis gratuitement par GitHub pour les depots publics. Les depots prives ont un quota mensuel de minutes incluses selon le plan. Les actions utilisees (actions/checkout, actions/setup-node, etc.) sont toutes officielles et gratuites.