Docs/ CLI/ Push Deploy

Push Deploy

Déployez depuis un répertoire local avec sh0 push. Pas de dépôt Git requis.

Qu'est-ce que Push Deploy

sh0 push prend un répertoire local, détecte la stack (Node.js, Python, Go, Rust, etc.), empaquette les fichiers, les téléverse vers votre serveur, construit un conteneur et retourne une URL en ligne. Le flux entier se déroule en une seule commande.

C'est la façon la plus rapide de passer du code à un déploiement en cours d'exécution. Pas de configuration Git, pas de configuration de dépôt, pas d'intégration de webhooks -- juste push et c'est parti.

Utilisation de base

Deploy current directory
sh0 push

Sortie :

Output
Pushing my-app
  Detected nodejs (Next.js) -- 85/100 health
  Uploading 42 files (2.3 MB) ··· OK 0.8s
  Building ··· OK 32.4s
  Deploying ··· OK 2.1s
  Live in 35.3s
  -> https://my-app.sh0.app

Vous pouvez aussi pousser un répertoire spécifique ou personnaliser le nom de l'app :

Custom options
sh0 push ~/projects/api --name my-api --port 3000

Comment ça marche

Le flux de push comporte six étapes :

  1. Résoudre le répertoire -- Par défaut le répertoire courant. Vérifie que le chemin existe.
  2. Vérifier le lien -- Si .sh0/link.json existe, c'est un re-push vers une app existante.
  3. Détecter la stack -- Identifie le framework et le langage (20+ stacks supportées).
  4. Exécuter la vérification de santé -- Évalue le projet selon les bonnes pratiques. Avertit des problèmes bloquants.
  5. Empaqueter et téléverser -- Crée un ZIP en mémoire, respectant les patterns d'exclusion. Téléverse via formulaire multipart.
  6. Construire et déployer -- Le serveur construit un conteneur, le démarre et attribue un domaine. Les logs de build sont diffusés en temps réel.

Options

OptionDéfautDescription
[path].Répertoire à pousser
--name <name>Nom du répertoireNom de l'app (minuscules, alphanumériques, tirets)
--project <id>Projet par défautProjet dans lequel déployer
--port <port>Détecté automatiquementPort de l'application dans le conteneur
--no-checkfalseIgnorer la vérification de santé
--timeout <secs>600Secondes maximales d'attente pour le déploiement

.sh0ignore

Contrôlez quels fichiers sont exclus du téléversement. Utilise la même syntaxe que .gitignore. Si aucun .sh0ignore n'existe, le CLI se rabat sur .dockerignore, puis .gitignore.

.sh0ignore
# Build artifacts
node_modules/
dist/
.next/

# Environment
.env
.env.*

# IDE
.vscode/
.idea/

Les répertoires suivants sont toujours exclus, indépendamment des fichiers d'exclusion :

  • .git/, node_modules/, __pycache__/, .env*
  • target/, .next/, .nuxt/, .svelte-kit/, dist/
  • venv/, .venv/, .sh0/, .DS_Store

Après le premier push, le CLI crée .sh0/link.json dans votre répertoire de projet. Ce fichier lie le répertoire local à l'app distante pour que les pushes suivants mettent à jour le même déploiement.

.sh0/link.json
{
  "app_id": "a1b2c3d4",
  "app_name": "my-app",
  "server_url": "https://panel.example.com"
}
Tip
Ajoutez .sh0/ à votre .gitignore. Le fichier de lien contient des informations spécifiques au serveur et ne devrait pas être partagé entre les environnements.

Vérifications de santé

Avant le téléversement, sh0 push exécute la même vérification de santé du code disponible via sh0 check. Il évalue votre projet de 0 à 100 et avertit des problèmes pouvant causer des échecs de build.

Ignorez la vérification de santé avec --no-check si vous savez ce que vous faites.

Comportement du re-push

Lorsque .sh0/link.json existe, exécuter sh0 push téléverse vers l'app existante au lieu d'en créer une nouvelle. Le serveur crée un nouveau déploiement, construit le code mis à jour et effectue un basculement blue-green si configuré.

Pour déployer comme nouvelle app, utilisez --name new-app-name ou supprimez .sh0/link.json.

Auto-push avec sh0 watch

Pour le développement, utilisez sh0 watch pour relancer automatiquement le push lors des changements de fichiers :

Watch mode
sh0 watch --debounce 3000

Ceci surveille le répertoire courant et relance le push après 3 secondes d'inactivité. Respecte les patterns .sh0ignore et effectue un push initial au démarrage. Voir la Référence des commandes pour toutes les options.

Intégration CI/CD

Utilisez sh0 push dans les pipelines CI/CD pour les projets qui n'utilisent pas le déploiement basé sur Git. Voici un exemple GitHub Actions :

.github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install sh0
        run: curl -fsSL https://get.sh0.dev | bash
      - name: Deploy
        env:
          SH0_API_URL: ${{ secrets.SH0_API_URL }}
          SH0_API_TOKEN: ${{ secrets.SH0_API_TOKEN }}
        run: sh0 push --name my-app