Ce projet met en place un runner GitHub Actions auto-hébergé dans un conteneur Docker, optimisé pour un environnement PHP.
Voici les étapes clés du fonctionnement interne du conteneur :
- Le conteneur est basé sur l’image officielle PHP CLI tournant sur Debian.
- La dernière version de l'image officielle Composer (latest-bin) est copiée dans le conteneur pour gérer les dépendances PHP.
- Les dépendances nécessaires sont installées automatiquement lors de la construction de l’image.
- Un utilisateur
non-rootavecprivilèges sudoest créé pour assurer la sécurité et la bonne gestion des permissions. - Au démarrage du conteneur, un script
entrypoint:- Télécharge la dernière version du Github Actions runner (Release) depuis GitHub.
- Extrait et installe le runner dans le conteneur.
- Configure et authentifie le runner à l’aide du jeton personnel fourni.
- Lance le runner, prêt à recevoir et exécuter les jobs GitHub Actions.
De cette façon à chaque push ou pull request, ce runner auto-hébergé exécute vos workflows CI/CD localement ou sur un serveur privé, offrant un contrôle total et une meilleure confidentialité pour votre code.
Le workflow inclus dans ce projet réalise notamment :
- L’action GitHub checkout pour cloner les fichiers du projet dans l’environnement du runner.
- L'installation des dépendances PHP du projet via Composer.
- Une analyse statique du code avec PHPStan.
- L’exécution des tests unitaires avec PHPUnit.
- Docker Desktop installé sur votre machine.
- Jeton d'accès personnel GitHub (PAT) avec les autorisations appropriées (ex. :
repo,workflow) pour permettre au runner de s'enregistrer et exécuter les jobs sur le dépôt.
git clone https://github.com/xamayca/Docker-Github-actions-runner-self-hosted-example.gitcd Docker-Github-actions-runner-self-hosted-exampleCrée un fichier .env à la racine du projet avec les variables suivantes, en remplaçant les valeurs par celles de votre projet :
GITHUB_PERSONAL_TOKEN="<JETON_PERSONNEL_GITHUB>"
GITHUB_REPOSITORY_OWNER="<NOM_D_UTILISATEUR_GITHUB>"
GITHUB_REPOSITORY_NAME="<NOM_DU_DEPOT_GITHUB>"Cette commande télécharge les images nécessaires et construit le conteneur avant de le lancer :
docker compose up --build💡 Astuce :
Le runner GitHub Actions est régulièrement mis à jour.
Si une nouvelle version est disponible, pense à mettre à jour les variables correspondantes dans ton fichier
.env.RUNNER_VERSION="VERSION_DE_LA_RELEASE" RUNNER_SHA256="SHA-256-DE-L_ARCHIVE"Pour cela, consulte les dernières releases disponibles et récupère la dernière version du runner ainsi que le SHA-256 de l’archive sur ce lien : https://github.com/actions/runner/releases/