Primeiro Deploy

Este guia mostra como fazer seu primeiro deploy completo usando o Runner.

Pre-requisitos

  • Runner instalado e configurado (runner init executado)
  • 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 desenvolvimento

Criar .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: 3

Adapte conforme seu projeto:

  • project: Nome unico do projeto
  • port: Porta que sua app escuta
  • domain: Dominio de producao
  • version.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 dev

Passo 2: Build do Projeto

Frontend (React, Vue, etc)

npm run build

Backend (Flask, Node, etc)

# Para Python com src/
# Nao precisa build, apenas organize o codigo em src/

# Para Node
npm run build  # Se necessario

Passo 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 dist

Passo 4: Registrar App no Runner

No servidor de producao:

runner add --repo seu-usuario/meu-app

Este comando:

  1. Clona o repositorio em /apps/seu-usuario_meu-app/
  2. Faz checkout da branch dist
  3. Registra a app no estado do Runner

Passo 5: Executar Deploy

Deploy Manual (Primeiro)

runner deploy --app /apps/seu-usuario_meu-app

Acompanhar 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-app

Passo 6: Verificar

Testar Acesso

curl https://app.meusite.com.br/health

Verificar Container

docker ps | grep meu-app

Verificar Traefik

ls /etc/traefik/dynamic/ | grep meu-app

Passo 7: Configurar Cron

Para deploys automaticos, adicione ao crontab:

crontab -e
*/5 * * * * /opt/runner/runner fetch --deploy --json >> /var/log/runner-fetch.json 2>&1

Proximo 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 --deploy

Troubleshooting

Deploy nao inicia

# Verificar se app esta registrada
runner list

# Verificar configuracao
runner validate --file /apps/seu-usuario_meu-app/.deploy.yml

Health check falha

# Ver logs do container
docker logs seu-usuario_meu-app_production

# Verificar endpoint
curl http://localhost:8000/health  # Dentro do container

Rollback

Se algo der errado:

runner rollback --app /apps/seu-usuario_meu-app

Estrutura Final

Apos o deploy, a estrutura sera:

/apps/seu-usuario_meu-app/
├── .deploy.yml
├── .env
├── .secrets
└── src/
    └── production/
        └── v1.0.0/
            └── current -> v1.0.0

Proximos Passos

By Borlot.com.br on 12/02/2026