Orchestrateur de déploiement en ligne de commande, écrit en Python (asyncio, Typer, Rich). Il construit et déploie les services d'un dépôt monorepo (Next.js, Docker, Java, Python) en local ou sur un serveur.
Les scripts Bash et les Makefiles deviennent vite difficiles à maintenir. StackPilot remplace ces scripts par une configuration déclarative et un moteur qui ne relance que ce qui a changé.
- En parallèle : le frontend et le backend se construisent et se déploient en même temps.
- Seulement ce qui change : StackPilot lit le diff Git. Si seul le frontend a bougé, l'image Docker du backend n'est pas reconstruite.
- Des journaux lisibles : la sortie de chaque service est préfixée et colorée, en temps réel.
- Moteur : exécution concurrente des étapes avec
asyncio, lecture des diffs Git, capture destdoutetstderrsans blocage. - Affichage : journaux en direct et état de chaque pipeline, avec Rich.
- Configuration : un fichier
stackpilot.yamlà la racine du projet.
name: PlanFixe-Ops
services:
- name: backend
path: ./backend
trigger_paths: ["backend/"]
steps:
- name: build-mvn
cmd: ./mvnw clean package -DskipTests
- name: docker-build
cmd: docker build -t myapp-backend .
- name: frontend
path: ./frontend
trigger_paths: ["frontend/"]
steps:
- name: deploy-vercel
cmd: vercel --prodPrérequis : Python 3.10 ou plus récent, Git.
./setup_dev.sh # crée l'environnement virtuel et installe les dépendances
source venv/bin/activatepython -m src.stackpilot.main init # génère un stackpilot.yaml de départ
python -m src.stackpilot.main push # détecte les changements et lance les pipelinesTests : python -m pytest, lancés aussi par GitHub Actions à chaque envoi (Python 3.10 et 3.12).
MIT. Florian Anthony, florian-anthony.ch.