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.

Sommaire

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é.

github actions flow

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