CI/CD avec GitHub Actions : Guide complet
GitHub Actions transforme votre repository en une plateforme d’automatisation complète pour vos workflows de développement.
Concepts fondamentaux
Workflow de base
name: CI/CD Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
Stratégies avancées
Matrix builds
strategy:
matrix:
node-version: [16, 18, 20]
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/setup-node@v4
with:
node-version: $
Déploiement conditionnel
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to production
run: |
echo "Deploying to production..."
# Commandes de déploiement
Sécurité et secrets
Gestion des secrets
- name: Deploy
env:
API_KEY: $
DATABASE_URL: $
run: |
echo "Deploying with secure credentials"
OIDC et authentification
permissions:
id-token: write
contents: read
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: $
aws-region: eu-west-1
Actions personnalisées
Action composite
# .github/actions/setup-app/action.yml
name: 'Setup Application'
description: 'Setup Node.js and install dependencies'
inputs:
node-version:
description: 'Node.js version'
required: false
default: '18'
runs:
using: 'composite'
steps:
- uses: actions/setup-node@v4
with:
node-version: $
- run: npm ci
shell: bash
Monitoring et optimisation
- Utilisez les caches intelligemment
- Parallélisez les jobs
- Surveillez les temps d’exécution
- Optimisez les images Docker
GitHub Actions offre une flexibilité exceptionnelle pour automatiser tous vos workflows de développement.