Fiche de référence GitHub Actions – Structure standard et liste des actions les plus utiles
Un aperçu des actions GitHub courantes et de leur structure.
GitHub Actions est une plateforme d’automatisation et de CI/CD intégrée à GitHub, utilisée pour construire, tester et déployer votre code en fonction d’événements tels que des pushes, des pull requests, ou selon un calendrier.
En plus du GitHub standard, vous pouvez utiliser GitHub Actions sur un serveur Gitea auto-hébergé.

Les Actions englobent des outils officiels, communautaires et tiers, prenant en charge l’automatisation depuis les constructions et les tests jusqu’au déploiement, la gestion des versions, l’assurance qualité (QA) et les notifications.
Ce résumé couvre la structure des actions GitHub, une brève description et les actions les plus couramment utilisées dans les flux de travail open source et commerciaux. Il fait partie de Outils de développement : Le guide complet des flux de travail de développement moderne.
Structure de configuration de base
Les workflows GitHub Actions sont définis dans des fichiers YAML situés dans le répertoire .github/workflows du dépôt.
name: Workflow Name
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run tests
run: npm test
- Le bloc on spécifie les événements déclencheurs.
- Chaque job s’exécute sur son propre runner.
- Les steps peuvent exécuter des commandes shell ou appeler des actions réutilisables.
Composants principaux du workflow
| Composant | Description |
|---|---|
| Workflow | Processus automatisé (YAML) déclenché par un événement |
| Événement | Activité qui déclenche le workflow (push, pull_request, etc.) |
| Job | Série d’étapes exécutées sur un runner, pouvant s’exécuter séquentiellement ou en parallèle |
| Step | Chaque commande ou action dans un job |
| Runner | VM ou conteneur où les jobs sont exécutés |
| Action | Extension/add-on réutilisable encapsulant une tâche |
Événements déclencheurs
- push
- pull_request
- schedule (utilisant la syntaxe cron)
- workflow_dispatch (déclencheur manuel, permet des paramètres d’entrée)
- release, issue, etc.
Exemple :
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
Actions intégrées utiles
| Action | But | Paramètres courants |
|---|---|---|
| actions/checkout | Cloner le code du dépôt | ref, token, submodules, persist-credentials |
| actions/setup-node | Configurer l’environnement Node.js | node-version, cache, architecture, check-latest |
| actions/setup-python | Configurer Python | python-version, architecture |
| actions/cache | Mettre en cache les dépendances | path, key, restore-keys |
| docker/build-push-action | Construire et pousser des images Docker | context, file, platforms, tags, push, build-args |
| actions/upload-artifact | Télécharger les artefacts de build | name, path, if-no-files-found |
| actions/download-artifact | Télécharger les artefacts | name, path |
| github/email-actions | Envoyer des notifications par email | to, subject, content, attachments |
| peter-evans/create-pull-request | Créer des PR via le workflow | branch, title, body, labels, base |
| actions/github-script | Exécuter du JavaScript arbitraire dans votre workflow | script, github-token |
Paramètres d’action
Paramètres généraux pour n’importe quel appel d’action :
- name: Some Action or Step
uses: owner/repo@ref
with:
param1: value
param2: value
env:
ENV_VAR: value
if: ${{ condition }}
run: command_to_run
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with : arguments passés à l’action (voir la documentation de l’action pour toutes les options)
- env : variables d’environnement pour l’étape
- if : exécution conditionnelle
- run : commandes shell (si l’on n’utilise pas une action)
- shell : shell utilisé pour exécuter l’étape
- continue-on-error : continuer même si l’étape échoue
Définition des entrées d’action personnalisées
Dans votre métadonnées d’action (action.yml) :
inputs:
example-input:
description: 'An example input'
required: false
default: 'default-value'
Lorsqu’il est utilisé dans un workflow :
- uses: my/action@v1
with:
example-input: 'custom-value'
Accédé comme variable d’environnement INPUT_EXAMPLE_INPUT lorsque l’action s’exécute.
Exemple : Workflow avec paramètres manuels
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to environment
run: echo "Deploying to ${{ github.event.inputs.environment }}"
Marketplace des Actions
- Des milliers d’actions réutilisables sont disponibles sur le GitHub Marketplace.
- Les catégories incluent : déploiements cloud, outils de notification, frameworks de test, analyse de code, et plus encore.
- Explorez : actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact, et bien d’autres.
Conseils rapides
- Placez les fichiers de workflow dans
.github/workflows. - Utilisez workflow_dispatch avec inputs pour les exécutions manuelles et paramétrées.
- Utilisez l’action cache pour accélérer l’installation des dépendances.
- Utilisez une matrix de job pour tester plusieurs versions OS/runtime.
- Utilisez des secrets pour les données sensibles, référencés comme
${{ secrets.SECRET_NAME }}.
Cette fiche pratique couvre l’essentiel de l’utilisation, de la configuration et de l’extension de GitHub Actions pour l’automatisation, la CI/CD et plus encore. Pour plus de détails et de mises à jour, consultez toujours la documentation officielle de GitHub et les dépôts d’actions.
Actions GitHub courantes
Voici une liste pratique d’actions GitHub fréquemment utilisées pour automatiser la CI/CD, les tests, la construction, le déploiement et les tâches de workflow :
Actions officielles principales
| Action | But | Paramètres d’exemple clés |
|---|---|---|
| actions/checkout | Clone le code du dépôt | ref, submodules |
| actions/setup-node | Configure l’environnement Node.js | node-version, cache |
| actions/setup-python | Configure l’environnement Python | python-version |
| actions/setup-java | Configure le JDK Java | distribution, java-version |
| actions/cache | Met en cache les dépendances et sorties de build | path, key, restore-keys |
| actions/upload-artifact | Télécharge les artefacts de build | name, path |
| actions/download-artifact | Télécharge les artefacts depuis le workflow | name, path |
| actions/github-script | Exécute du JavaScript en utilisant le contexte et l’API GitHub | script |
| actions/create-release | Crée une version GitHub | tag_name, release_name |
| actions/upload-release-asset | Télécharge des assets vers une version | upload_url, asset_path |
| actions/labeler | Applique automatiquement des labels aux issues/PRs | repo-token, configuration-path |
Actions populaires de la communauté et tierces
| Action | But |
|---|---|
| docker/build-push-action | Construire et pousser des images Docker |
| actions/setup-go | Configurer l’environnement Go |
| super-linter/super-linter | Linting de code automatisé universel |
| trufflesecurity/trufflehog | Scanner pour les secrets et identifiants |
| peaceiris/actions-gh-pages | Déployer des sites statiques vers GitHub Pages |
| JamesIves/github-pages-deploy-action | Déployer des projets vers GitHub Pages |
| peter-evans/create-pull-request | Créer des pull requests automatiquement |
| softprops/action-gh-release | Créer et télécharger des versions GitHub |
| ad-m/github-push-action | Pousser des changements vers le dépôt GitHub |
| actions/setup-dotnet | Configurer le SDK .NET |
| azure/login | S’authentifier vers Azure |
| google-github-actions/auth | S’authentifier vers Google Cloud |
Actions de test, QA et reporting
| Action | But |
|---|---|
| actions/setup-ruby | Configurer l’environnement Ruby |
| codecov/codecov-action | Télécharger les rapports de couverture de code vers Codecov |
| coverallsapp/github-action | Télécharger les résultats de couverture vers Coveralls |
| dorny/test-reporter | Attacher les résultats de test aux vérifications GitHub |
| stefanzweifel/git-auto-commit-action | Auto-commit et pousser les modifications de fichiers |
Actions de déploiement et de notification
| Action | But |
|---|---|
| appleboy/scp-action | Télécharger des fichiers en utilisant SCP |
| SamKirkland/FTP-Deploy-Action | Déployer des fichiers via FTP/FTPS |
| cypress-io/github-action | Exécuter des tests end-to-end Cypress |
| slackapi/slack-github-action | Envoyer des messages vers Slack |
| dawidd6/action-send-mail | Envoyer des emails pendant les exécutions de workflow |
Utilitaires et gestion de workflow
| Action | But |
|---|---|
| peter-evans/repository-dispatch | Déclenche des workflows de dépôts externes |
| fregante/setup-git-user | Configure les identifiants Git utilisateur pour les commits |
| andymckay/labeler | Labels issues et PRs basés sur les chemins |
| actions/configure-pages | Configure la publication vers GitHub Pages |
| EndBug/add-and-commit | Ajouter et commit des fichiers dans un workflow |
| dangoslen/changelog-enforcer | Vérifie si un changelog a été mis à jour pour les PRs |
Comment en trouver plus
Il existe de nombreuses actions GitHub qui permettent l’automatisation des workflows, telles que les tests automatisés, le déploiement en production, les notifications et les intégrations avec d’autres services. Le GitHub Marketplace liste des milliers d’actions dans des catégories telles que les tests, la sécurité, le déploiement, les notifications, la qualité du code et les intégrations. Les listes curatées telles que “Awesome Actions” sont également excellentes pour l’inspiration et la découverte.
Liens utiles
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- Fiche pratique Git
- Gitea - installation et test
- Sauvegarde et restauration du serveur Gitea
- Utiliser Gitea Actions pour déployer un site Hugo vers AWS S3
- Gitflow : Étapes, alternatives, avantages et inconvénients
- DevOps avec GitOps - Argo CD, Flux, Jenkins X, Weave GitOps et autres