Deploy via Git
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://panel.example.com/api/v1/webhooks/{provider}/{app_id}O segmento do provedor é o seu provedor Git: github, gitlab, bitbucket. O sh0 verifica o cabeçalho de assinatura que cada provedor envia; uma requisição sem assinatura válida é recusada.
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 a cada 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://panel.example.com/api/v1/apps/{app_id}/deployments \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" -d '{}'URL de implantação (sem provedor Git)
Toda aplicação, qualquer que seja a sua origem (repositório Git, Dockerfile, imagem ou arquivo), pode ter uma URL de implantação. Um simples POST nessa URL reimplanta a aplicação exatamente como o botão Implantar. Sem provedor Git, sem assinatura e sem chave de API: qualquer ferramenta capaz de enviar uma requisição HTTP pode usá-la — uma tarefa de integração contínua, um script, um cron, um servidor de build.
curl -X POST https://panel.example.com/api/v1/hooks/deploy/{app_id}/{token}Abra a aplicação, vá em Configurações e clique em «Criar a URL de implantação» na seção «URL de implantação». Copie a URL imediatamente: o token que ela contém só é mostrado uma vez e é guardado com hash. Se perdê-lo, regenere a URL — a anterior deixa de funcionar na hora.
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.