Definition
GitHub Actions est la plateforme CI/CD native de GitHub. Elle permet d'automatiser des workflows de build, test et deploiement directement depuis les repositories GitHub, declenches par des evenements (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 cles
- Workflow : fichier YAML dans
.github/workflows/qui definit l'automatisation - Event (trigger) : ce qui declenche le workflow (push, PR, cron, manual)
- Job : ensemble de steps qui s'executent sur un runner
- Step : une action ou une commande shell
- Action : module reutilisable (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"
Fonctionnalites 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.