Git Deploy
Conecte qualquer repositório Git e implante automaticamente a cada push. O sh0 cuida da clonagem, build e implantação da sua aplicação com zero configuração.
Conectando um Repositório
Para implantar a partir do Git, navegue até sua stack no painel do sh0 e selecione Novo App → Repositório Git. Você pode conectar um repositório inserindo sua URL ou vinculando sua conta do provedor Git para acesso a repositórios privados.
Para repositórios públicos, cole a URL de clone HTTPS diretamente. Para repositórios privados, você precisará conectar sua conta do provedor Git ou adicionar uma chave SSH em Configurações → Chaves SSH.
https://github.com/your-org/your-app.gitProvedores Suportados
O sh0 funciona com qualquer provedor Git que suporte webhooks e clonagem SSH/HTTPS:
- GitHub -- Integração OAuth para vinculação de repositório com um clique
- GitLab -- Auto-hospedado e GitLab.com suportados
- Bitbucket -- Edições Cloud e Server
- Gitea / Forgejo -- Forjas Git auto-hospedadas
- Qualquer servidor Git -- Qualquer repositório acessível via SSH ou HTTPS
Configuração de Webhook
Webhooks habilitam o push-to-deploy. Quando você faz push de código para seu repositório, seu provedor Git envia uma notificação para o sh0, que aciona um novo build e implantação.
Se você conectou seu provedor Git via OAuth, os webhooks são configurados automaticamente. Para configuração manual, adicione um webhook nas configurações do seu repositório com a seguinte URL:
https://your-sh0-server.com:9000/api/hooks/git/{app_id}Configure o webhook para acionar em eventos de push. O sh0 gera um segredo de webhook para cada aplicação, que você encontra em Configurações do App → Git → Segredo do Webhook. Adicione este segredo ao seu provedor Git para verificar payloads recebidos.
Seleção de Branch
Por padrão, o sh0 implanta a partir da branch main. Você pode alterar a branch de implantação nas configurações da aplicação para implantar a partir de qualquer branch no seu repositório.
Configurações comuns incluem:
- Produção: Implantar a partir de
mainouproduction - Staging: Implantar a partir de
developoustaging - Feature branches: Use Ambientes de Preview para implantações automáticas de PR
Configurações de Build
O sh0 detecta automaticamente a stack da sua aplicação e configura o pipeline de build adequadamente. Você também pode sobrescrever essas configurações manualmente.
Auto-Detecção de Dockerfile
Se seu repositório contém um Dockerfile, o sh0 o usa automaticamente. Você também pode especificar um caminho de Dockerfile personalizado e contexto de build:
dockerfile: ./deploy/Dockerfile
context: .
build_args:
NODE_ENV: production
API_URL: https://api.example.comO sh0 suporta builds multi-stage, argumentos de build e contextos de build personalizados. O build roda no seu servidor, então imagens grandes não geram custos de transferência.
Buildpacks
Se seu repositório não inclui um Dockerfile, o sh0 analisa seu código e gera um Dockerfile otimizado automaticamente. Ele detecta mais de 15 frameworks e linguagens:
- Node.js: Next.js, Nuxt, SvelteKit, Remix, Express, Fastify
- Python: Django, Flask, FastAPI
- Go: Módulos Go padrão
- Rust: Projetos baseados em Cargo
- PHP: Laravel, Symfony
- Ruby: Rails, Sinatra
- Sites estáticos: HTML, Astro, Hugo, Jekyll
Deploy on Push
Com webhooks configurados, cada push para sua branch de implantação aciona automaticamente uma nova implantação. O fluxo é:
- Você faz push do código para a branch configurada
- Seu provedor Git envia um webhook para o sh0
- O sh0 puxa o código mais recente do seu repositório
- A imagem Docker é construída a partir do seu Dockerfile (ou um gerado automaticamente)
- Um novo contêiner é implantado usando implantação blue-green
- O tráfego é trocado para o novo contêiner assim que os health checks passarem
Você também pode desabilitar implantações automáticas e acioná-las manualmente pelo painel ou via API:
curl -X POST https://your-sh0-server.com:9000/api/apps/{app_id}/deploy \
-H "Authorization: Bearer YOUR_TOKEN"Visualizando Logs de Build
Cada implantação gera um log completo de build que você pode transmitir em tempo real pelo painel. Os logs de build incluem:
- Saída do clone e checkout Git
- Etapas de build da imagem Docker (cada camada)
- Inicialização do contêiner e resultados do health check
- Confirmação da troca de tráfego
Logs de build são armazenados para cada implantação e podem ser acessados pela aba Implantações a qualquer momento. Se um build falhar, o sh0 mantém a versão anterior em execução e marca a implantação como falha com uma mensagem de erro detalhada.