GitHub Actions : CI/CD automatisé pour vos projets

Automatisez tests, builds et déploiements gratuitement avec GitHub Actions. Guide pratique avec exemples pour tous les langages.

Pourquoi GitHub Actions ?

Structure d'un workflow

Les workflows sont des fichiers YAML dans .github/workflows/ :

name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run tests
        run: npm test

Workflow Python complet

name: Python CI

on:
  push:
    branches: [main]
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.10', '3.11', '3.12']

    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'

      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          pip install pytest pytest-cov

      - name: Run tests
        run: pytest --cov=src --cov-report=xml

      - name: Upload coverage
        uses: codecov/codecov-action@v4
        with:
          file: coverage.xml

Workflow .NET

name: .NET CI

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '8.0.x'

      - name: Restore
        run: dotnet restore

      - name: Build
        run: dotnet build --no-restore

      - name: Test
        run: dotnet test --no-build --verbosity normal

Déploiement automatique

Vers Azure

deploy:
  needs: build
  runs-on: ubuntu-latest
  if: github.ref == 'refs/heads/main'

  steps:
    - uses: actions/checkout@v4

    - name: Login to Azure
      uses: azure/login@v2
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Deploy to Azure Web App
      uses: azure/webapps-deploy@v3
      with:
        app-name: mon-app
        package: './dist'

Vers Docker Hub

publish:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4

    - name: Login to Docker Hub
      uses: docker/login-action@v3
      with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_TOKEN }}

    - name: Build and push
      uses: docker/build-push-action@v5
      with:
        push: true
        tags: user/app:${{ github.sha }}

Gestion des secrets

Les secrets sont chiffrés et injectés à l'exécution :

Bonnes pratiques

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    timeout-minutes: 15
Conseil : Utilisez des actions versionnées (ex: @v4) plutôt que @main pour éviter les surprises lors des mises à jour.

Conclusion

GitHub Actions est devenu incontournable pour le CI/CD moderne. Gratuit, puissant, bien intégré - difficile de faire mieux pour les projets GitHub.

Besoin d'aide pour mettre en place votre CI/CD ? Contactez-moi.

Davy Abderrahman

Davy Abderrahman

Expert DevOps. Mise en place de pipelines CI/CD pour des dizaines de projets.

En savoir plus