Docs/ Implantação/ Git Deploy

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.

New app creation dialog showing the Git Repository option

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.

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

Provedores 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
Git provider selection screen with GitHub, GitLab, and Bitbucket options
Tip
Conectar sua conta GitHub via OAuth permite ao sh0 listar seus repositórios, configurar webhooks automaticamente e reportar o status do build de volta nos seus pull requests.

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:

Webhook 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.

Webhook configuration panel showing the webhook URL and secret
Note
O sh0 valida assinaturas de webhook usando HMAC-SHA256. Isso garante que apenas pushes genuínos do seu repositório acionem implantações.

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.

Branch selection dropdown in app Git settings

Configurações comuns incluem:

  • Produção: Implantar a partir de main ou production
  • Staging: Implantar a partir de develop ou staging
  • 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:

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

O 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
Auto-detected build settings showing Node.js with Next.js framework
Tip
Você pode sobrescrever as configurações auto-detectadas a qualquer momento. Navegue até Configurações do App → Build para personalizar o Dockerfile, comando de build ou comando de instalação.

Deploy on Push

Com webhooks configurados, cada push para sua branch de implantação aciona automaticamente uma nova implantação. O fluxo é:

  1. Você faz push do código para a branch configurada
  2. Seu provedor Git envia um webhook para o sh0
  3. O sh0 puxa o código mais recente do seu repositório
  4. A imagem Docker é construída a partir do seu Dockerfile (ou um gerado automaticamente)
  5. Um novo contêiner é implantado usando implantação blue-green
  6. 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:

Trigger deploy 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
Real-time build log streaming in the sh0 dashboard

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.

Warning
Se seu build falhar repetidamente, verifique os Logs de Build para dependências ausentes ou comandos de build incorretos. Você também pode acessar um contêiner de debug via SSH usando Acesso ao Terminal para solucionar problemas.