Primeiro Deploy
Este guia mostra como fazer seu primeiro deploy completo usando o Runner.
Pre-requisitos
- Runner instalado e configurado (
runner initexecutado) - Repositorio Git com seu codigo
- Docker e Traefik rodando no servidor
Passo 1: Preparar Repositorio
Criar Branch dist
cd /caminho/do/projeto
git checkout -b dist
git push -u origin dist
git checkout dev # Voltar para desenvolvimentoCriar .deploy.yml
Crie o arquivo .deploy.yml na raiz:
project: meu-app
port: 8000
networks:
- public
healthcheck:
path: /health
interval: 10s
timeout: 5s
retries: 3
github:
repo: seu-usuario/meu-app
version:
source: file
file: package.json
field: version
instances:
production:
domain: app.meusite.com.br
source:
type: dist
keep_versions: 3Adapte conforme seu projeto:
project: Nome unico do projetoport: Porta que sua app escutadomain: Dominio de producaoversion.file: Arquivo com a versao (package.json, version.json, etc)
Commit da Configuracao
git add .deploy.yml
git commit -m "chore: adiciona configuracao CI/CD"
git push origin devPasso 2: Build do Projeto
Frontend (React, Vue, etc)
npm run buildBackend (Flask, Node, etc)
# Para Python com src/
# Nao precisa build, apenas organize o codigo em src/
# Para Node
npm run build # Se necessarioPasso 3: Preparar Branch dist
# Mudar para dist
git checkout dist
# Limpar conteudo antigo
rm -rf dist/ src/ package.json version.json
# Copiar artefatos
# Para frontend:
cp -r /caminho/build/dist ./dist/
# Para backend Python:
cp -r /caminho/src ./src/
cp requirements.txt ./
cp version.json ./ # Se usar
# Copiar configuracao
cp /caminho/.deploy.yml ./
# Commit
git add .
git commit -m "deploy: v1.0.0"
git push origin distPasso 4: Registrar App no Runner
No servidor de producao:
runner add --repo seu-usuario/meu-appEste comando:
- Clona o repositorio em
/apps/seu-usuario_meu-app/ - Faz checkout da branch
dist - Registra a app no estado do Runner
Passo 5: Executar Deploy
Deploy Manual (Primeiro)
runner deploy --app /apps/seu-usuario_meu-appAcompanhar o Deploy
# Ver logs em tempo real
runner logs tail --app /apps/seu-usuario_meu-app
# Ver status
runner health --app /apps/seu-usuario_meu-appPasso 6: Verificar
Testar Acesso
curl https://app.meusite.com.br/healthVerificar Container
docker ps | grep meu-appVerificar Traefik
ls /etc/traefik/dynamic/ | grep meu-appPasso 7: Configurar Cron
Para deploys automaticos, adicione ao crontab:
crontab -e*/5 * * * * /opt/runner/runner fetch --deploy --json >> /var/log/runner-fetch.json 2>&1Proximo Deploy
Para deployar novas versoes:
# 1. Desenvolver em dev
git checkout dev
# ... fazer alteracoes ...
git commit -m "feat: nova funcionalidade"
git push origin dev
# 2. Release para main
git checkout main
git merge dev --no-ff -m "release: v1.1.0"
git tag -a v1.1.0 -m "Release v1.1.0"
git push origin main --tags
# 3. Build e deploy
npm run build
git checkout dist
rm -rf dist/ && cp -r /build/dist ./dist/
git add . && git commit -m "deploy: v1.1.0"
git push origin dist
# Runner detecta e deploya automaticamente (via cron)
# Ou force manualmente:
runner fetch --deployTroubleshooting
Deploy nao inicia
# Verificar se app esta registrada
runner list
# Verificar configuracao
runner validate --file /apps/seu-usuario_meu-app/.deploy.ymlHealth check falha
# Ver logs do container
docker logs seu-usuario_meu-app_production
# Verificar endpoint
curl http://localhost:8000/health # Dentro do containerRollback
Se algo der errado:
runner rollback --app /apps/seu-usuario_meu-appEstrutura Final
Apos o deploy, a estrutura sera:
/apps/seu-usuario_meu-app/
├── .deploy.yml
├── .env
├── .secrets
└── src/
└── production/
└── v1.0.0/
└── current -> v1.0.0Proximos Passos
- Canary Deployment - Deploy gradual
- Staging de PRs - Ambientes de teste
- Configurando Notificacoes - Telegram/Discord
By Borlot.com.br on 12/02/2026