Docs/ Déploiement/ Déploiement Git

Déploiement Git

Connectez n'importe quel dépôt Git et déployez automatiquement à chaque push. sh0 gère le clonage, le build et le déploiement de votre application sans aucune configuration.

Connexion d'un dépôt

Pour déployer depuis Git, accédez à votre stack dans le tableau de bord sh0 et sélectionnez Nouvelle application → Dépôt Git. Vous pouvez connecter un dépôt en saisissant son URL ou en liant votre compte de fournisseur Git pour accéder aux dépôts privés.

New app creation dialog showing the Git Repository option

Pour les dépôts publics, collez directement l'URL de clonage HTTPS. Pour les dépôts privés, vous devrez connecter votre compte de fournisseur Git ou ajouter une clé SSH dans Paramètres → Clés SSH.

Repository URL
https://github.com/your-org/your-app.git

Fournisseurs pris en charge

sh0 fonctionne avec tout fournisseur Git prenant en charge les webhooks et le clonage SSH/HTTPS :

  • GitHub -- Intégration OAuth pour la liaison de dépôt en un clic
  • GitLab -- Auto-hébergé et GitLab.com pris en charge
  • Bitbucket -- Éditions Cloud et Server
  • Gitea / Forgejo -- Forges Git auto-hébergées
  • Tout serveur Git -- Tout dépôt accessible via SSH ou HTTPS
Git provider selection screen with GitHub, GitLab, and Bitbucket options
Tip
Connecter votre compte GitHub via OAuth permet à sh0 de lister vos dépôts, de configurer automatiquement les webhooks et de rapporter le statut de build sur vos pull requests.

Configuration des webhooks

Les webhooks activent le déploiement au push. Lorsque vous poussez du code vers votre dépôt, votre fournisseur Git envoie une notification à sh0, qui déclenche un nouveau build et déploiement.

Si vous avez connecté votre fournisseur Git via OAuth, les webhooks sont configurés automatiquement. Pour une configuration manuelle, ajoutez un webhook dans les paramètres de votre dépôt avec l'URL suivante :

Webhook URL
https://your-sh0-server.com:9000/api/hooks/git/{app_id}

Configurez le webhook pour se déclencher sur les événements push. sh0 génère un secret de webhook pour chaque application, que vous pouvez trouver dans Paramètres de l'application → Git → Secret du webhook. Ajoutez ce secret à votre fournisseur Git pour vérifier les charges utiles entrantes.

Webhook configuration panel showing the webhook URL and secret
Note
sh0 valide les signatures des webhooks avec HMAC-SHA256. Cela garantit que seuls les push authentiques de votre dépôt déclenchent des déploiements.

Sélection de branche

Par défaut, sh0 déploie depuis la branche main. Vous pouvez changer la branche de déploiement dans les paramètres de votre application pour déployer depuis n'importe quelle branche de votre dépôt.

Branch selection dropdown in app Git settings

Les configurations courantes incluent :

  • Production : Déployer depuis main ou production
  • Staging : Déployer depuis develop ou staging
  • Branches de fonctionnalité : Utilisez les Environnements de prévisualisation pour les déploiements automatiques de PR

Paramètres de build

sh0 détecte automatiquement la pile technologique de votre application et configure le pipeline de build en conséquence. Vous pouvez également remplacer ces paramètres manuellement.

Détection automatique du Dockerfile

Si votre dépôt contient un Dockerfile, sh0 l'utilise automatiquement. Vous pouvez également spécifier un chemin de Dockerfile et un contexte de build personnalisés :

Build configuration
dockerfile: ./deploy/Dockerfile
context: .
build_args:
  NODE_ENV: production
  API_URL: https://api.example.com

sh0 prend en charge les builds multi-étapes, les arguments de build et les contextes de build personnalisés. Le build s'exécute sur votre serveur, donc les grandes images n'entraînent pas de coûts de transfert.

Buildpacks

Si votre dépôt ne contient pas de Dockerfile, sh0 analyse votre code et génère automatiquement un Dockerfile optimisé. Il détecte plus de 15 frameworks et langages :

  • Node.js : Next.js, Nuxt, SvelteKit, Remix, Express, Fastify
  • Python : Django, Flask, FastAPI
  • Go : Modules Go standard
  • Rust : Projets basés sur Cargo
  • PHP : Laravel, Symfony
  • Ruby : Rails, Sinatra
  • Sites statiques : HTML, Astro, Hugo, Jekyll
Auto-detected build settings showing Node.js with Next.js framework
Tip
Vous pouvez remplacer les paramètres auto-détectés à tout moment. Accédez à Paramètres de l'application → Build pour personnaliser le Dockerfile, la commande de build ou la commande d'installation.

Déploiement au push

Avec les webhooks configurés, chaque push vers votre branche de déploiement déclenche automatiquement un nouveau déploiement. Le flux de travail est le suivant :

  1. Vous poussez du code vers la branche configurée
  2. Votre fournisseur Git envoie un webhook à sh0
  3. sh0 récupère le dernier code de votre dépôt
  4. L'image Docker est construite à partir de votre Dockerfile (ou d'un Dockerfile auto-généré)
  5. Un nouveau conteneur est déployé en utilisant le déploiement blue-green
  6. Le trafic est basculé vers le nouveau conteneur une fois les bilans de santé réussis

Vous pouvez également désactiver les déploiements automatiques et les déclencher manuellement depuis le tableau de bord ou via l'API :

Trigger deploy via API
curl -X POST https://your-sh0-server.com:9000/api/apps/{app_id}/deploy \
  -H "Authorization: Bearer YOUR_TOKEN"

Consultation des logs de build

Chaque déploiement génère un log de build complet que vous pouvez diffuser en temps réel depuis le tableau de bord. Les logs de build incluent :

  • Sortie du clone et checkout Git
  • Étapes de build de l'image Docker (chaque couche)
  • Démarrage du conteneur et résultats des bilans de santé
  • Confirmation du basculement du trafic
Real-time build log streaming in the sh0 dashboard

Les logs de build sont stockés pour chaque déploiement et sont accessibles depuis l'onglet Déploiements à tout moment. Si un build échoue, sh0 conserve la version précédente en fonctionnement et marque le déploiement comme échoué avec un message d'erreur détaillé.

Warning
Si votre build échoue de manière répétée, consultez les Logs de build pour repérer les dépendances manquantes ou les commandes de build incorrectes. Vous pouvez également vous connecter en SSH à un conteneur de débogage via l'Accès terminal pour diagnostiquer le problème.