GitHub Actions est un outil d'intégration et de livraison continues (CI/CD) intégré directement dans GitHub. Il te permet d'automatiser, tester et déployer ton code en définissant des workflows. Un workflow est un ensemble d'actions déclenchées par un événement, comme un commit ou une pull request.
Un workflow est défini dans un fichier YAML situé dans le dossier .github/workflows/ à la racine de ton dépôt. Voici les principales composantes :
Le champ name est optionnel, mais il permet de donner un nom à ton workflow. Si ce champ est omis, GitHub utilisera le nom du fichier YAML.
name: Nom de mon workflowLe champ on définit les événements qui déclenchent le workflow. Il peut s'agir de plusieurs événements comme push, pull_request, workflow_dispatch, etc.
on:
push: # Déclenché sur un push
branches:
- main # Spécifie les branches
pull_request: # Déclenché sur une PR
schedule: # Exécuter périodiquement
- cron: "0 0 * * 1" # Chaque lundi à minuitUn workflow est composé d'un ou plusieurs jobs. Chaque job est exécuté sur un runner (environnement virtuel). Les jobs sont définis dans la section jobs et sont exécutés en parallèle par défaut, à moins que tu utilises needs pour créer une dépendance entre eux.
jobs:
build:
runs-on: ubuntu-latest # Choix du runner (ex. ubuntu, macos, windows)
steps:
- name: Checkout du code
uses: actions/checkout@v3
- name: Configurer Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Installer les dépendances
run: npm install
- name: Exécuter les tests
run: npm testChaque job contient des étapes (steps) qui décrivent les actions individuelles. Il peut s'agir d'exécuter des commandes (run) ou d'utiliser des actions prédéfinies (uses).
- run : Permet d'exécuter directement une commande dans le runner.
- uses : Permet d'utiliser une action réutilisable, souvent depuis le marketplace d'actions GitHub.
steps:
- name: Exécuter une commande shell
run: echo "Hello, GitHub Actions!"steps:
- name: Utiliser une action pour Node.js
uses: actions/setup-node@v3
with:
node-version: '16'Les variables d'environnement peuvent être définies au niveau du workflow ou des jobs pour stocker des valeurs réutilisables.
env:
NODE_ENV: production
DATABASE_URL: ${{ secrets.DATABASE_URL }} # Secrets GitHubLes secrets sont utilisés pour gérer les informations sensibles (comme les clés API) et peuvent être stockés dans les paramètres du dépôt GitHub.
jobs:
build:
steps:
- name: Utiliser un secret
run: echo "La clé est : ${{ secrets.MY_SECRET_KEY }}"name: Déploiement
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout du code
uses: actions/checkout@v3
- name: Exécuter le script de déploiement
run: ./deploy.shname: Test PR
on:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout du code
uses: actions/checkout@v3
- name: Installer les dépendances
run: npm install
- name: Exécuter les tests
run: npm testGitHub fournit des runners hébergés (Ubuntu, Windows, MacOS) pour exécuter les workflows. Tu peux aussi utiliser tes propres self-hosted runners si tu as des besoins spécifiques.
ubuntu-latestwindows-latestmacos-latest
- Modulariser les workflows : Divise les workflows en plusieurs fichiers pour mieux gérer leur complexité.
- Réutilisation des actions : Utilise des actions du marketplace pour éviter de réécrire du code déjà disponible.
- Secrets : Utilise les
secretspour sécuriser tes informations sensibles. - Testing : Toujours tester tes workflows localement avec des outils comme act avant de les pousser.