Articles
Apprendre Le Web
< Retour
06/01/2024
Les Dix Meilleures Pratiques pour l’Intégration Continue avec GitHub Actions

Les Dix Meilleures Pratiques pour l’Intégration Continue avec GitHub Actions

Introduction

L’intégration continue (CI) permet d’automatiser la compilation, les tests et le déploiement du code source. Elle offre une boucle de retour rapide aux développeurs grâce à des informations immédiates sur les erreurs dans leur pipeline CI/CD. Dans cet article, nous allons explorer les dix meilleures pratiques pour tirer parti de GitHub Actions afin d’améliorer votre flux de travail d’intégration continue.

Qu’est-ce que GitHub Actions ?

GitHub Actions est un service offert par GitHub qui vous permet d’exécuter automatiquement vos pipelines CI/CD directement depuis votre référentiel git. Il s’agit d’une solution polyvalente compatible avec plusieurs langages de programmation et systèmes opérationnels.

1. Organisez Votre Code Source

Avant toute chose, il convient d’organiser correctement votre code source. Créez des branches distinctes pour chaque fonctionnalité ou correction de bug. Veillez également à ce que tous les fichiers nécessaires soient inclus dans votre projet. Un bon exemple serait d’avoir un fichier .github/workflows/main.yml contenant toutes les définitions de workflow relatifs à votre projet.

name: Main Workflow
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      ...

2. Utilisez Des Images Officielles Lorsque Possible

Les images conteneurisées constituent souvent l’épine dorsale de nombreuses étapes GitHub Actions. Pour garantir une expérience optimale, utilisez toujours des images officiellement supportées lorsqu’elles existent. Par exemple, préférez l’image node:14 plutôt que mycompany/custom-node.

3. Limitez La Portée De Vos Triggers

Évitez autant que possible d’utiliser des triggers trop larges comme push sans précision supplémentaire. Optez plutôt pour des événements spécifiques tels que pull_request, push associés à certaines branches seulement (par ex., push: branches: master) ou encore release.

4. Séparez Les Tâches En Étapes Distinctes

Distinguez clairement chaque action élémentaire en utilisant des étapes séparées. Cette approche facilitera grandement la maintenance future et améliorera la visibilité globale de votre workflow.

steps:
  - name: Install Dependencies
    run: npm install
  - name: Run Tests
    run: npm test

5. Gardez Vos Jobs Courts Et Atomiques

Chaque job doit être aussi court et atomique que possible. Évitez d’inclure plusieurs commandes dans une seule étape et privilégiez plutôt des jobs multiples interconnectés via des artefacts partageables.

6. Partagez Des Artefacts Entre Jobs

Si nécessaire, partagez des données entre différents jobs en créant des artefacts. Ces derniers peuvent ensuite servir d’entrées pour d’autres travaux ultérieurs dans votre pipeline CI/CD.

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Build Project
        id: build
        run: make
    artifacts:
      path: binaries/*
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Download Artifact From Previous Job
        use: actions/download-artifact@v2
        with:
          name: ${{needs.build.outputs.artefactName}}

7. Optimisez Le Temps D’Exécution

Optimisez le temps d’exécution global de votre workflow en parallélisant les tâches indépendantes. L’attribut strategy.matrix peut être particulièrement utile à cette fin.

jobs:
  test:
    strategy:
      matrix:
        node-version: [10.x, 12.x, 14.x]
    runs-on: ${{matrix.node-version}}
    steps:
      - name: Use Node.js ${{matrix.node-version}}
        uses: actions/setup-node@v2
        with:
          node-version: ${{matrix.node-version}}
      - name: NPM Install and Test
        run: |
          npm ci
          npm test

8. Surveillez Attentivement Les Sorties De Commande

Surveillez attentivement les sorties de commande émanant de chacun de vos jobs. Elles fournissent non seulement des informations cruciales quant à l’état actuel de votre workflow, mais elles peuvent également aider à diagnostiquer rapidement les problèmes potentiels.

9. Documentez Vos Workflows

Prenez le temps de documenter chaque workflow ainsi que ses composants respectifs. Incluez notamment une brève description de son objectif principal, des conditions déclenchant son activation et des résultats attendus suite à son exécution.

10. Réduisez Au Maximum Les Permissions Requises

Enfin, ne demandez pas davantage de permissions que celles strictement nécessaires à l’exécution de votre workflow. Plusieurs mécanismes existent pour limiter ces autorisations telles que les secrets stockés dans votre compte GitHub ou encore les entrées restreintes liées aux events triggering your workflow.