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
sh0 pushSortie :
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.appVous pouvez aussi pousser un répertoire spécifique ou personnaliser le nom de l'app :
sh0 push ~/projects/api --name my-api --port 3000Comment ça marche
Le flux de push comporte six étapes :
- Résoudre le répertoire -- Par défaut le répertoire courant. Vérifie que le chemin existe.
- Vérifier le lien -- Si
.sh0/link.jsonexiste, c'est un re-push vers une app existante. - Détecter la stack -- Identifie le framework et le langage (20+ stacks supportées).
- Exécuter la vérification de santé -- Évalue le projet selon les bonnes pratiques. Avertit des problèmes bloquants.
- Empaqueter et téléverser -- Crée un ZIP en mémoire, respectant les patterns d'exclusion. Téléverse via formulaire multipart.
- 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
| Option | Défaut | Description |
|---|---|---|
| [path] | . | Répertoire à pousser |
| --name <name> | Nom du répertoire | Nom de l'app (minuscules, alphanumériques, tirets) |
| --project <id> | Projet par défaut | Projet dans lequel déployer |
| --port <port> | Détecté automatiquement | Port de l'application dans le conteneur |
| --no-check | false | Ignorer la vérification de santé |
| --timeout <secs> | 600 | Secondes 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.
# 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
.sh0/link.json
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.
{
"app_id": "a1b2c3d4",
"app_name": "my-app",
"server_url": "https://panel.example.com"
}.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 :
sh0 watch --debounce 3000Ceci 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 :
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