Fiche de raccourcis GitHub Actions - Structure standard et liste des actions les plus utiles
Un peu sur les actions GitHub courantes et leur structure.
GitHub Actions
est une plateforme d’automatisation et de CI/CD au sein de GitHub, utilisée pour construire, tester et déployer votre code en fonction d’événements tels que les pushes, les demandes de fusion ou un calendrier.
En plus de l’utilisation standard de GitHub, vous pouvez utiliser GitHub Actions sur un serveur Gitea auto-hébergé.
Ce résumé couvre la structure de GitHub Actions, une courte description et les actions les plus courantes utilisées dans les workflows open source et commerciaux. Les actions englobent des outils officiels, communautaires et tiers, soutenant l’automatisation des builds et des tests jusqu’au déploiement, la gestion des versions, le QA et les notifications.
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: Nom du workflow
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configurer Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Exécuter les 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 en 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é déclenchant le workflow (push, pull_request, etc.) |
Job | Séquence d’étapes exécutée sur un runner, peut s’exécuter séquentiellement ou en parallèle |
Étape | Chaque commande ou action dans un job |
Runner | VM ou conteneur où les jobs sont exécutés |
Action | Extension ou module réutilisable encapsulant une tâche |
Événements de déclenchement
- push
- pull_request
- schedule (en utilisant la syntaxe cron)
- workflow_dispatch (déclenchement manuel, permet les paramètres d’entrée)
- release, issue, etc.
Exemple :
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Environnement de déploiement'
required: true
default: 'production'
type: string
Actions utiles intégrées
Action | Objectif | Paramètres courants |
---|---|---|
actions/checkout | Vérifier 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 publier des images Docker | context, file, platforms, tags, push, build-args |
actions/upload-artifact | Télécharger des artefacts de build | name, path, if-no-files-found |
actions/download-artifact | Télécharger des artefacts | name, path |
github/email-actions | Envoyer des notifications par e-mail | to, subject, content, attachments |
peter-evans/create-pull-request | Créer des PRs via le workflow | branch, title, body, labels, base |
actions/github-script | Exécuter du JavaScript arbitraire dans le workflow | script, github-token |
Paramètres d’action
Paramètres généraux pour toute appel d’action :
- name: Certaine action ou étape
uses: owner/repo@ref
with:
param1: valeur
param2: valeur
env:
ENV_VAR: valeur
if: ${{ condition }}
run: commande_à_exécuter
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 en shell (si 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éfinir des entrées d’action personnalisées
Dans votre métadonnée d’action (action.yml) :
inputs:
example-input:
description: 'Un exemple d'entrée'
required: false
default: 'valeur-par-défaut'
Lorsqu’elle est utilisée dans un workflow :
- uses: my/action@v1
with:
example-input: 'valeur-personnalisée'
Accédée comme variable d’environnement INPUT_EXAMPLE_INPUT
lors de l’exécution de l’action.
Exemple : Workflow avec des paramètres manuels
name: Déployer
on:
workflow_dispatch:
inputs:
environment:
description: 'Environnement de déploiement'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Vérifier le code
uses: actions/checkout@v4
- name: Déployer à l'environnement
run: echo "Déploiement vers ${{ github.event.inputs.environment }}"
Marché des actions
- Des milliers d’actions réutilisables sont disponibles sur le GitHub Marketplace.
- Les catégories incluent : déploiements en nuage, outils de notification, cadres de test, analyse de code, etc.
- Explorer : 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 la matrice de jobs pour tester plusieurs versions d’OS/running.
- Utilisez les secrets pour les données sensibles, référencés comme
${{ secrets.SECRET_NAME }}
.
Ce guide couvre les éléments essentiels pour utiliser, configurer et étendre GitHub Actions pour l’automatisation, le CI/CD et bien plus. 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 des actions GitHub fréquemment utilisées pour automatiser le CI/CD, les tests, les builds, le déploiement et les tâches de workflow :
Actions officielles principales
Action | Objectif | Paramètres clés |
---|---|---|
actions/checkout | Vérifie 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 les 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 à l’aide du contexte GitHub et de l’API | script |
actions/create-release | Crée une publication GitHub | tag_name, release_name |
actions/upload-release-asset | Télécharge des actifs vers une publication | upload_url, asset_path |
actions/labeler | Applique automatiquement des étiquettes aux problèmes/PRs | repo-token, configuration-path |
Actions populaires de la communauté et tiers
Action | Objectif |
---|---|
docker/build-push-action | Construit et publie des images Docker |
actions/setup-go | Configure l’environnement Go |
super-linter/super-linter | Lintage automatique universel du code |
trufflesecurity/trufflehog | Analyse les secrets et les identifiants |
peaceiris/actions-gh-pages | Déploie des sites statiques vers GitHub Pages |
JamesIves/github-pages-deploy-action | Déploie des projets vers GitHub Pages |
peter-evans/create-pull-request | Crée automatiquement des demandes de fusion |
softprops/action-gh-release | Crée et télécharge des publications GitHub |
ad-m/github-push-action | Envoie des modifications de nouveau vers le dépôt GitHub |
actions/setup-dotnet | Configure le SDK .NET |
azure/login | Authentifie sur Azure |
google-github-actions/auth | Authentifie sur Google Cloud |
Actions de test, QA et rapports
Action | Objectif |
---|---|
actions/setup-ruby | Configure l’environnement Ruby |
codecov/codecov-action | Télécharge les rapports de couverture de code vers Codecov |
coverallsapp/github-action | Télécharge les résultats de couverture vers Coveralls |
dorny/test-reporter | Attache les résultats de test aux vérifications GitHub |
stefanzweifel/git-auto-commit-action | Commite et推送 des modifications de fichiers automatiquement |
Actions de déploiement et de notification
Action | Objectif |
---|---|
appleboy/scp-action | Télécharge des fichiers via SCP |
SamKirkland/FTP-Deploy-Action | Déploie des fichiers via FTP/FTPS |
cypress-io/github-action | Exécute des tests d’extrémité Cypress |
slackapi/slack-github-action | Envoie des messages à Slack |
dawidd6/action-send-mail | Envoie des e-mails pendant les exécutions de workflow |
Actions d’utilité et de gestion de workflow
Action | Objectif |
---|---|
peter-evans/repository-dispatch | Déclenche des workflows de dépôts externes |
fregante/setup-git-user | Configure les identifiants Git pour les commits |
andymckay/labeler | Étiquette les problèmes et les PRs en fonction des chemins |
actions/configure-pages | Configure la publication vers GitHub Pages |
EndBug/add-and-commit | Ajoute et commite des fichiers dans un workflow |
dangoslen/changelog-enforcer | Vérifie si un changelog a été mis à jour pour les PRs |
Comment en trouver davantage
Il existe de nombreuses actions GitHub qui permettent l’automatisation des workflows, tels 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 comme les tests, la sécurité, le déploiement, les notifications, la qualité du code et les intégrations. Des listes curatées comme “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
- GIT Cheatsheet
- Gitea - installation et tests
- 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