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.

Qu’est-ce qu’une action ?
Section intitulée « 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
Section intitulée « Les trois types d’actions »| Type | Description | Linux | macOS | Windows |
|---|---|---|---|---|
| JavaScript | Code JS exécuté directement sur le runner | ✅ | ✅ | ✅ |
| Docker | Conteneur avec un environnement complet | ✅ | ❌ | ❌ |
| Composite | Assemblage 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
Section intitulée « 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
Section intitulée « 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@11bd71901bbe5b1630ceea73d27597364c9af683Trouver des actions sur La Marketplace
Section intitulée « 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
Section intitulée « Les catégories principales »| Catégorie | Exemples d’actions |
|---|---|
| Continuous integration | Tests, linting, build |
| Deployment | AWS, Azure, GCP, Kubernetes |
| Code quality | SonarQube, CodeClimate |
| Security | Trivy, Snyk, CodeQL |
| Utilities | Cache, artifacts, notifications |
Actions officielles GitHub
Section intitulée « Actions officielles GitHub »L’organisation actions maintient des actions officielles, testées et
sécurisées :
| Action | Description |
|---|---|
actions/checkout | Clone le repository |
actions/setup-node | Configure Node.js |
actions/setup-python | Configure Python |
actions/cache | Cache des dépendances |
actions/upload-artifact | Sauvegarde des fichiers entre jobs |
actions/download-artifact | Ré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
Section intitulée « Évaluer une action avant de l’utiliser »Avant d’ajouter une action à votre workflow, posez-vous ces questions :
-
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), oudocker/*(Docker Inc.) inspirent plus confiance qu’une action derandom-user-42. -
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.
-
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.
-
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:. -
Quelles permissions demande-t-elle ?
Lisez la documentation. Si une action de notification Slack demande
contents: write, c’est suspect.
Signaux d’alerte
Section intitulée « Signaux d’alerte »Méfiez-vous si :
- ❌ Le repository n’a pas de fichier
action.ymldocumenté - ❌ 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
Section intitulée « 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
Section intitulée « 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.2Le commentaire # v4.2.2 conserve la lisibilité tout en garantissant
l’immutabilité.
Comment trouver le SHA ?
# Via l'API GitHubcurl -s https://api.github.com/repos/actions/checkout/commits/v4 | jq -r .sha
# Via la CLI ghgh api repos/actions/checkout/commits/v4 --jq .sha2. Vérifier avec OpenSSF Scorecard
Section intitulée « 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
Section intitulée « 3. Préférer les actions officielles »Quand le choix existe, préférez :
- Les actions de l’organisation
actions/*(GitHub officiel) - Les actions d’éditeurs connus (
aws-actions/*,docker/*,azure/*) - Les actions de projets établis (
anchore/*,aquasecurity/*)
4. Limiter les permissions
Section intitulée « 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.2Si l’action est compromise, les dégâts sont limités.
5. Activer Dependabot pour les actions
Section intitulée « 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: 2updates: - 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
Section intitulée « 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.txtConsultez 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
Section intitulée « Dépannage »L’action n’est pas trouvée
Section intitulée « 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
Section intitulée « Erreur de permissions »Error: Resource not accessible by integrationCauses 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 issuesL’action est lente
Section intitulée « 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
Section intitulée « 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 ?
Section intitulée « Quand créer plutôt qu’utiliser ? »| Situation | Recommandation |
|---|---|
| Logique simple (quelques commandes) | run: avec du shell |
| Logique réutilisée dans plusieurs workflows | Action composite |
| Besoin d’un environnement spécifique | Action Docker |
| Besoin de performances et compatibilité multi-OS | Action JavaScript |
| Tâche complexe et bien maintenue | Action du Marketplace |
Exemple : action composite simple
Section intitulée « 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 --versionUtilisez-la dans vos workflows :
steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup-project # Action localeÀ retenir
Section intitulée « À 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
Section intitulée « Contrôle des connaissances »Testez vos connaissances sur le Marketplace et les actions GitHub Actions.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
📋 Récapitulatif de vos réponses
Vérifiez vos réponses avant de soumettre. Cliquez sur une question pour la modifier.
Détail des réponses
Liens utiles
Section intitulée « Liens utiles »- GitHub Actions Marketplace — Catalogue officiel des actions
- About custom actions — Documentation officielle sur les types d’actions
- Creating a composite action — Tutoriel pour créer une action composite
- Sécurité GitHub Actions : les bases — Les 3 risques principaux dont les actions tierces
- OpenSSF Scorecard — Évaluer la maturité sécurité d’un projet