
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.