Définition
GitHub Actions est la plateforme CI/CD native de GitHub. Elle permet d'automatiser des workflows de build, test et déploiement directement depuis les repositories GitHub, declenches par des événements (push, pull request, schedule, webhook).
Lancee en 2019, GitHub Actions est devenue la plateforme CI/CD la plus populaire pour les projets open source et les startups.
Concepts clés
- Workflow : fichier YAML dans
.github/workflows/qui définit l'automatisation - Event (trigger) : ce qui declenche le workflow (push, PR, cron, manual)
- Job : ensemble de steps qui s'exécutent sur un runner
- Step : une action ou une commande shell
- Action : module réutilisable (actions/checkout, actions/setup-node)
- Runner : machine qui execute le job (GitHub-hosted ou self-hosted)
Exemple complet
name: CI/CD Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run build
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SERVER_HOST }}
username: deploy
key: ${{ secrets.SSH_KEY }}
source: "dist/"
target: "/var/www/monsite"
Fonctionnalités avancees
Matrix builds
strategy:
matrix:
node-version: [18, 20, 22]
os: [ubuntu-latest, windows-latest]
Reusable workflows
jobs:
call-shared:
uses: ./.github/workflows/shared-ci.yml
secrets: inherit
Cache
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
Tarification
| Plan | Minutes/mois | Stockage |
|---|---|---|
| Free | 2 000 | 500 Mo |
| Team | 3 000 | 2 Go |
| Enterprise | 50 000 | 50 Go |
Les runners self-hosted sont gratuits en minutes.