Fiche de raccourcis GitHub Actions - Structure standard et liste des actions les plus utiles

Un peu sur les actions GitHub courantes et leur structure.

Sommaire

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

github actions flow

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