Vous venez de modifier votre workflow GitHub Actions. Pour savoir s’il fonctionne, vous devez pousser le code, attendre que le runner démarre, puis découvrir — souvent — qu’une erreur de syntaxe ou un chemin incorrect fait tout échouer. Retour au code, nouveau push, nouvelle attente…
act résout ce problème en exécutant vos workflows localement, sur votre machine. Vous pouvez itérer en quelques secondes au lieu de plusieurs minutes, sans consommer vos minutes GitHub Actions.
Qu’est-ce que act ?
Section intitulée « Qu’est-ce que act ? »act est un outil en ligne de commande qui simule l’environnement GitHub Actions sur votre machine. Il utilise Docker pour créer des conteneurs qui imitent les runners GitHub, puis exécute vos workflows comme s’ils tournaient sur GitHub.
Concrètement, act vous permet de :
- Tester vos workflows avant de les pousser
- Débugger les erreurs sans attendre le runner distant
- Développer des workflows complexes de manière itérative
- Exécuter des workflows manuellement (
workflow_dispatch)
Prérequis
Section intitulée « Prérequis »Avant d’installer act, vous devez avoir :
- Docker installé et en cours d’exécution (act crée des conteneurs)
- Un terminal (bash, zsh, PowerShell)
- Un projet avec des workflows dans
.github/workflows/
Pour vérifier que Docker fonctionne :
docker versionSi Docker n’est pas installé, consultez le guide Docker.
Installation
Section intitulée « Installation »Avec Homebrew :
brew install actAvec Homebrew :
brew install actAvec asdf-vm :
asdf plugin add actasdf install act latestasdf set --home act latestDepuis les releases GitHub :
# Télécharger la dernière versioncurl -sSL https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bashAvec Chocolatey :
choco install act-cliAvec Scoop :
scoop install actVérification de l’installation :
act --versionLa commande doit afficher la version installée (ex: act version 0.2.74).
Premier lancement
Section intitulée « Premier lancement »À la première exécution, act vous demande quelle image Docker utiliser pour simuler les runners GitHub. Trois options sont proposées :
| Image | Taille | Compatibilité |
|---|---|---|
| Micro (~200 Mo) | Très légère | Limitée (manque beaucoup d’outils) |
| Medium (~500 Mo) | Équilibrée | Bonne pour la plupart des cas |
| Large (~18 Go) | Complète | Proche de l’environnement GitHub |
Pour commencer, choisissez Medium. Vous pourrez changer plus tard.
# Premier lancement - choisissez Mediumactact sauvegarde votre choix dans ~/.actrc pour les prochaines exécutions.
Utilisation de base
Section intitulée « Utilisation de base »Exécuter le workflow par défaut
Section intitulée « Exécuter le workflow par défaut »La commande act sans argument simule un événement push et exécute les
workflows qui répondent à cet événement :
actExécuter un workflow spécifique
Section intitulée « Exécuter un workflow spécifique »# Par chemin de fichieract -W .github/workflows/ci.yml
# Par nom du workflow (défini dans name:)act -W .github/workflows/build.ymlExécuter un job spécifique
Section intitulée « Exécuter un job spécifique »Si votre workflow contient plusieurs jobs, vous pouvez n’en exécuter qu’un :
# Exécuter uniquement le job "test"act -j test
# Exécuter uniquement le job "build" du workflow ci.ymlact -W .github/workflows/ci.yml -j buildSimuler différents événements
Section intitulée « Simuler différents événements »GitHub Actions se déclenche sur différents événements. act peut les simuler :
# Simuler un push (par défaut)act push
# Simuler une pull requestact pull_request
# Simuler un workflow manuelact workflow_dispatch
# Simuler un événement de releaseact releaseLister les workflows disponibles
Section intitulée « Lister les workflows disponibles »# Voir tous les workflows et leurs jobsact -l
# Voir les jobs pour un événement spécifiqueact -l pushact -l pull_requestGestion des secrets
Section intitulée « Gestion des secrets »Les workflows utilisent souvent des secrets (${{ secrets.TOKEN }}). act
propose plusieurs méthodes pour les fournir.
Fichier .secrets
Section intitulée « Fichier .secrets »Créez un fichier .secrets à la racine du projet :
# .secrets (format clé=valeur)GITHUB_TOKEN=ghp_xxxxxxxxxxxxNPM_TOKEN=npm_xxxxxxxxxxAWS_ACCESS_KEY_ID=AKIAXXXXXXXXAWS_SECRET_ACCESS_KEY=xxxxxxxxxxEnsuite, utilisez :
act --secret-file .secretsSecrets en ligne de commande
Section intitulée « Secrets en ligne de commande »Pour des tests rapides ou en CI :
act -s GITHUB_TOKEN=ghp_xxxx -s MY_SECRET=valeurVariables d’environnement
Section intitulée « Variables d’environnement »Pour les variables ${{ vars.X }} (non sensibles), utilisez un fichier .vars :
ENVIRONMENT=developmentAPI_URL=https://api-dev.example.comact --var-file .varsConfiguration avancée
Section intitulée « Configuration avancée »Fichier .actrc
Section intitulée « Fichier .actrc »Créez un fichier .actrc à la racine du projet pour sauvegarder vos options :
--secret-file .secrets--var-file .vars-P ubuntu-24.04=catthehacker/ubuntu:act-latest-P ubuntu-22.04=catthehacker/ubuntu:act-22.04--container-architecture linux/amd64Chaque ligne correspond à une option de la commande act.
Images Docker personnalisées
Section intitulée « Images Docker personnalisées »act utilise des images Docker qui imitent les runners GitHub. Par défaut, ces images sont plus légères mais moins complètes. Pour plus de compatibilité :
# Utiliser une image plus complèteact -P ubuntu-24.04=catthehacker/ubuntu:act-latest
# Ou votre propre imageact -P ubuntu-24.04=mon-registry/mon-image:tagMode verbeux pour le debug
Section intitulée « Mode verbeux pour le debug »# Logs détaillésact -v
# Encore plus détailléact -vvExécution à sec (dry-run)
Section intitulée « Exécution à sec (dry-run) »Pour voir ce qui serait exécuté sans vraiment l’exécuter :
act -nUtile pour valider la syntaxe et la structure avant une vraie exécution.
Limitations de act
Section intitulée « Limitations de act »act ne peut pas reproduire 100% de l’environnement GitHub Actions. Voici les principales limitations à connaître :
| Limitation | Explication |
|---|---|
| Événements limités | schedule, deployment, page_build ne sont pas supportés |
| API GitHub limitée | Pas d’accès à l’API GitHub comme en production |
| Services Docker | Les containers de service peuvent se comporter différemment |
| Cache | actions/cache fonctionne partiellement (stockage local) |
| Artifacts | actions/upload-artifact crée des fichiers locaux, pas d’API |
| Marketplace | Certaines actions tierces ont des incompatibilités |
Quand utiliser act :
- Tests de syntaxe et structure
- Développement itératif de workflows
- Validation des commandes et scripts
- Debug de problèmes de logique
Quand NE PAS compter sur act :
- Validation finale (toujours tester sur GitHub)
- Tests d’intégration avec l’API GitHub
- Workflows avec services complexes
Cas d’usage courants
Section intitulée « Cas d’usage courants »Debug interactif
Section intitulée « Debug interactif »# Exécuter avec logs détaillésact -j build -v
# Garder le conteneur après l'exécution pour investigueract --reuseWorkflow avec matrice
Section intitulée « Workflow avec matrice »# act exécute toutes les combinaisons de la matriceact -W .github/workflows/matrix.yml
# Exécuter une seule combinaisonact -j build -mTester un workflow_dispatch avec inputs
Section intitulée « Tester un workflow_dispatch avec inputs »Pour un workflow avec des inputs :
on: workflow_dispatch: inputs: environment: description: 'Environment to deploy' required: true type: choice options: [dev, staging, prod]Créez un fichier d’événement JSON :
{ "inputs": { "environment": "staging" }}Puis :
act workflow_dispatch -e event.jsonIntégration dans le flux de développement
Section intitulée « Intégration dans le flux de développement »Script de validation pré-push
Section intitulée « Script de validation pré-push »Créez un hook Git pour valider avant chaque push :
#!/bin/bashecho "🔍 Validation du workflow CI..."act -n -W .github/workflows/ci.yml
if [ $? -ne 0 ]; then echo "❌ Le workflow a des erreurs. Push annulé." exit 1fi
echo "✅ Workflow valide"N’oubliez pas de rendre le script exécutable :
chmod +x .git/hooks/pre-pushCombinaison avec actionlint
Section intitulée « Combinaison avec actionlint »Pour une validation complète :
# 1. Valider la syntaxe avec actionlintactionlint .github/workflows/*.yml
# 2. Si OK, tester avec actact -nVoir le guide actionlint pour la validation statique des workflows.
Dépannage
Section intitulée « Dépannage »”Cannot connect to Docker daemon”
Section intitulée « ”Cannot connect to Docker daemon” »Symptôme : act ne peut pas se connecter à Docker.
Solutions :
# Vérifier que Docker tournedocker info
# Sur Linux, ajouter votre utilisateur au groupe dockersudo usermod -aG docker $USER# Puis déconnectez-vous et reconnectez-vous“Image not found” ou pull très long
Section intitulée « “Image not found” ou pull très long »Symptôme : act tente de télécharger une image de 18 Go.
Solution : utiliser une image plus légère :
act -P ubuntu-24.04=catthehacker/ubuntu:act-latest“Action not found” ou incompatibilité
Section intitulée « “Action not found” ou incompatibilité »Symptôme : une action du Marketplace ne fonctionne pas.
Solutions :
- Vérifier la compatibilité sur le repo act
- Utiliser une image plus complète
- Accepter que certaines actions nécessitent le vrai GitHub
Architecture ARM (Mac M1/M2)
Section intitulée « Architecture ARM (Mac M1/M2) »Sur les Macs Apple Silicon, certaines images ne fonctionnent pas nativement :
# Forcer l'architecture x86_64 via émulationact --container-architecture linux/amd64Cela sera plus lent mais plus compatible.
À retenir
Section intitulée « À retenir »Itération rapide
Testez vos workflows en secondes sans pousser sur GitHub.
Économie de ressources
Pas de consommation de minutes Actions pendant le développement.
Debug efficace
Logs verbeux et possibilité de garder les conteneurs pour investigation.
Limitations connues
act n’est pas un remplacement complet — validez toujours sur GitHub.
Points clés :
- act exécute vos workflows GitHub Actions localement via Docker
- Utilisez
.secretset.actrcpour configurer votre environnement - Commencez avec l’image Medium, passez à une plus complète si nécessaire
- Combinez act avec actionlint pour une validation complète
- Toujours faire un test final sur GitHub avant merge
Liens utiles
Section intitulée « Liens utiles »- Repository act sur GitHub — Documentation et issues
- Images Docker disponibles — Images compatibles act
- Debug des workflows — Techniques de dépannage