Aller au contenu

La Marketplace GitHub Actions

Mise à jour :

La Marketplace GitHub Actions est une place de marché qui regroupe des milliers d’actions réutilisables créées par GitHub, des éditeurs, et la communauté. Plutôt que de réécrire la logique pour cloner un repo, installer Node.js, ou déployer sur AWS, vous utilisez une action existante avec uses:.

C’est un gain de temps énorme. Mais c’est aussi un risque de sécurité majeur si vous ne savez pas évaluer ce que vous allez utiliser.

GitHub Actions Marketplace

Qu’est-ce qu’une action ?

Une action est un composant réutilisable qui encapsule une tâche. Au lieu d’écrire 20 lignes de shell pour configurer Python avec cache, vous écrivez :

- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'

L’action setup-python gère tout : téléchargement, installation, configuration du PATH, mise en cache des dépendances. Vous vous concentrez sur votre logique métier.

Les trois types d’actions

TypeDescriptionLinuxmacOSWindows
JavaScriptCode JS exécuté directement sur le runner
DockerConteneur avec un environnement complet
CompositeAssemblage d’autres actions et commandes

Les actions JavaScript sont les plus rapides (pas de pull d’image) et fonctionnent sur tous les runners. Les actions Docker sont plus lourdes mais garantissent un environnement isolé et reproductible — attention, elles ne fonctionnent que sur Linux.

Anatomie d’une référence d’action

Quand vous écrivez uses: actions/checkout@v4, voici ce que ça signifie :

uses: actions/checkout@v4
└──────┬──────┘ └┬┘
owner/repo ref
  • owner : L’organisation ou l’utilisateur GitHub (ici actions, l’org officielle GitHub)
  • repo : Le nom du repository contenant l’action
  • ref : La version à utiliser (tag, branche, ou SHA)

Les différentes façons de référencer une version

# Tag (le plus courant, mais MUTABLE)
- uses: actions/checkout@v4
# Branche (DANGEREUX - change à chaque commit)
- uses: actions/checkout@main
# SHA complet (RECOMMANDÉ - immuable)
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

Trouver des actions sur La Marketplace

La Marketplace est accessible sur github.com/marketplace?type=actions. Vous pouvez rechercher par catégorie ou par mot-clé.

Les catégories principales

CatégorieExemples d’actions
Continuous integrationTests, linting, build
DeploymentAWS, Azure, GCP, Kubernetes
Code qualitySonarQube, CodeClimate
SecurityTrivy, Snyk, CodeQL
UtilitiesCache, artifacts, notifications

Actions officielles GitHub

L’organisation actions maintient des actions officielles, testées et sécurisées :

ActionDescription
actions/checkoutClone le repository
actions/setup-nodeConfigure Node.js
actions/setup-pythonConfigure Python
actions/cacheCache des dépendances
actions/upload-artifactSauvegarde des fichiers entre jobs
actions/download-artifactRécupère des artifacts

Ces actions sont un bon point de départ. Elles sont maintenues activement, documentées, et suivent les bonnes pratiques de sécurité.

Évaluer une action avant de l’utiliser

Avant d’ajouter une action à votre workflow, posez-vous ces questions :

  1. Qui est l’auteur ?

    Sur La Marketplace, cherchez le badge Verified creator (✓) qui indique que GitHub a vérifié l’identité de l’organisation. Les actions de actions/* (GitHub), aws-actions/* (AWS), ou docker/* (Docker Inc.) inspirent plus confiance qu’une action de random-user-42.

  2. Est-elle maintenue ?

    Vérifiez la date du dernier commit, les issues ouvertes, et la réactivité des mainteneurs. Une action abandonnée depuis 2 ans est un risque.

  3. Combien de personnes l’utilisent ?

    Le nombre d’étoiles et de forks donne une indication. Une action populaire a plus d’yeux dessus, donc plus de chances que les failles soient détectées.

  4. Ai-je vraiment besoin d’une action ?

    Parfois, 3 lignes de shell suffisent. Une action ajoute une dépendance et un risque. Si la logique est simple, préférez run:.

  5. Quelles permissions demande-t-elle ?

    Lisez la documentation. Si une action de notification Slack demande contents: write, c’est suspect.

Signaux d’alerte

Méfiez-vous si :

  • ❌ Le repository n’a pas de fichier action.yml documenté
  • ❌ Le code source n’est pas lisible (obfusqué)
  • ❌ L’action demande des permissions excessives
  • ❌ Peu d’étoiles et dernier commit il y a plus d’un an
  • ❌ Pas de releases, juste une branche main
  • ❌ Le nom ressemble à une action populaire (typosquatting)

Sécurité : les bons réflexes

Utiliser une action tierce, c’est exécuter du code d’un inconnu avec accès à vos secrets. Adoptez ces réflexes dès maintenant :

1. Épingler par SHA

Au lieu des tags mutables, utilisez le SHA complet du commit :

# ❌ Tag mutable - peut changer sans prévenir
- uses: actions/checkout@v4
# ✅ SHA immuable - vous contrôlez exactement le code exécuté
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

Le commentaire # v4.2.2 conserve la lisibilité tout en garantissant l’immutabilité.

Comment trouver le SHA ?

Terminal window
# Via l'API GitHub
curl -s https://api.github.com/repos/actions/checkout/commits/v4 | jq -r .sha
# Via la CLI gh
gh api repos/actions/checkout/commits/v4 --jq .sha

2. Vérifier avec OpenSSF Scorecard

OpenSSF Scorecard analyse la maturité sécurité d’un projet open source. Entrez l’URL du repository de l’action pour voir son score.

Un score élevé indique que le projet suit les bonnes pratiques : branch protection, signed releases, dependency updates, etc.

3. Préférer les actions officielles

Quand le choix existe, préférez :

  1. Les actions de l’organisation actions/* (GitHub officiel)
  2. Les actions d’éditeurs connus (aws-actions/*, docker/*, azure/*)
  3. Les actions de projets établis (anchore/*, aquasecurity/*)

4. Limiter les permissions

Même si une action est de confiance, appliquez le principe de moindre privilège :

permissions:
contents: read # Par défaut, lecture seule
jobs:
test:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

Si l’action est compromise, les dégâts sont limités.

5. Activer Dependabot pour les actions

Dependabot peut surveiller les actions de vos workflows et vous alerter en cas de vulnérabilité. Il peut aussi créer des pull requests pour mettre à jour les actions automatiquement.

Ajoutez dans .github/dependabot.yml :

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

Dependabot créera des PR quand une nouvelle version d’une action est disponible, en conservant l’épinglage par SHA si vous l’utilisez.

Passer des paramètres à une action

La plupart des actions acceptent des paramètres via la propriété with: :

- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: '3.12' # Version de Python
cache: 'pip' # Activer le cache pip
cache-dependency-path: | # Fichiers pour le cache
requirements.txt
requirements-dev.txt

Consultez toujours la documentation de l’action pour connaître les paramètres disponibles. La page du Marketplace ou le README.md du repository liste les inputs et leurs valeurs par défaut.

Dépannage

L’action n’est pas trouvée

Error: Unable to resolve action `actions/checkout@v99`

Causes probables :

  • Le tag/SHA n’existe pas
  • Typo dans le nom de l’action
  • Le repository est privé ou a été supprimé

Solution : Vérifiez l’URL exacte sur La Marketplace et le tag dans les releases du repository.

Erreur de permissions

Error: Resource not accessible by integration

Causes probables :

  • L’action a besoin de permissions que vous n’avez pas déclarées
  • Le token GITHUB_TOKEN n’a pas les droits nécessaires

Solution : Ajoutez les permissions requises dans votre workflow :

permissions:
contents: read
issues: write # Si l'action doit créer des issues

L’action est lente

Causes probables :

  • Action Docker qui télécharge une grosse image
  • Pas de cache configuré
  • Action mal optimisée

Solution : Cherchez une alternative JavaScript ou configurez le cache si l’action le supporte.

Créer ses propres actions : la meilleure façon d’apprendre

Avant de chercher une action sur La Marketplace, posez-vous la question : puis-je le faire moi-même ?

Créer vos propres actions présente plusieurs avantages :

  • Maîtrise totale : vous savez exactement ce que fait le code
  • Apprentissage : vous comprenez le fonctionnement interne de GitHub Actions
  • Sécurité : pas de dépendance tierce = pas de risque supply chain
  • Personnalisation : adapté exactement à vos besoins

Quand créer plutôt qu’utiliser ?

SituationRecommandation
Logique simple (quelques commandes)run: avec du shell
Logique réutilisée dans plusieurs workflowsAction composite
Besoin d’un environnement spécifiqueAction Docker
Besoin de performances et compatibilité multi-OSAction JavaScript
Tâche complexe et bien maintenueAction du Marketplace

Exemple : action composite simple

Créez .github/actions/setup-project/action.yml :

name: 'Setup Project'
description: 'Configure l''environnement du projet'
runs:
using: 'composite'
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
shell: bash
run: npm ci
- name: Verify installation
shell: bash
run: npm --version && node --version

Utilisez-la dans vos workflows :

steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-project # Action locale

À retenir

  • Créez vos propres actions pour les cas simples — c’est la meilleure façon d’apprendre
  • La Marketplace contient des milliers d’actions, mais toutes ne sont pas sûres
  • Une action exécute du code tiers avec accès à vos secrets
  • Épinglez toujours par SHA pour éviter les modifications surprises
  • Évaluez l’auteur (badge Verified creator), la maintenance, et la popularité
  • Le typosquatting est un risque réel — vérifiez l’orthographe exacte
  • Préférez les actions officielles (actions/*, éditeurs vérifiés)
  • Activez Dependabot pour être alerté des vulnérabilités

Contrôle des connaissances

Testez vos connaissances sur le Marketplace et les actions GitHub Actions.

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 70% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Liens utiles