runner stage
Comandos para gerenciar ambientes de staging de Pull Requests.
Visao Geral
O staging permite criar ambientes efemeros para testar Pull Requests antes do merge.
Comandos
Deploy de PR
runner stage deploy --repo <user/repo> --pr <number> [--json]Parametros:
--repo: Repositorio GitHub (usuario/repo)--pr: Numero da Pull Request--json: Output em JSON
Exemplo:
runner stage deploy --repo usuario/meu-app --pr 42Output:
Staging deployed:
ID: staging_meu-app_pr42
URL: https://pr-42.staging.meusite.com.br
TTL: 48h (expira em 2026-02-14 10:30)Listar Stagings
runner stage list [--json]Exemplo:
runner stage listOutput:
Stagings ativos:
staging_meu-app_pr42
URL: pr-42.staging.meusite.com.br
Status: healthy
TTL: 46h restantes
staging_outro-app_pr15
URL: pr-15.staging.outrosite.com.br
Status: healthy
TTL: 12h restantesDestruir Staging
runner stage destroy --id <staging_id>Exemplo:
runner stage destroy --id staging_meu-app_pr42Cleanup Automatico
runner stage cleanup [--json]Este comando:
- Lista todos os stagings
- Remove os que passaram do TTL
- Libera recursos (containers, config, diretorios)
Configuracao
No .deploy.yml
instances:
pr:
domain_pattern: "pr-${PR_NUMBER}.staging.meusite.com.br"
source:
type: pr
ephemeral: true
ttl_hours: 48
staging:
enabled: true
max_instances: 5
ttl_hours: 48No config.yml (Global)
staging:
enabled: true
base_path: /opt/runner/staging
network: public
default_ttl_hours: 48
max_total_instances: 20Variaveis de Template
| Variavel | Descricao | Exemplo |
|---|---|---|
${PR_NUMBER} |
Numero da PR | 42 |
${PROJECT} |
Nome do projeto | meu-app |
${BRANCH} |
Branch da PR | feature/login |
${DOMAIN} |
Dominio base | meusite.com.br |
${DATETIME} |
Data/hora | 20260212-1030 |
${HASH} |
Hash curto | abc123 |
${RANDOM} |
String aleatoria | x7k9 |
Cron de Cleanup
Configure cleanup automatico no crontab:
# Cleanup a cada hora
0 * * * * /opt/runner/runner stage cleanup --json >> /var/log/runner-staging-cleanup.json 2>&1Requisitos
DNS Wildcard
Configure um registro wildcard no DNS:
*.staging.meusite.com.br → IP_DO_SERVIDORGitHub CLI
O comando stage deploy usa gh para clonar a branch da PR:
# Verificar instalacao
gh --version
# Autenticar
gh auth loginLimites
- Por projeto:
staging.max_instances(default: 3) - Global:
staging.max_total_instances(default: 20)
Se o limite for atingido:
runner stage deploy --repo usuario/meu-app --pr 43
# Error: max instances reached (5/5). Destroy an existing staging first.Exit Codes
| Codigo | Significado |
|---|---|
| 0 | Sucesso |
| 1 | Erro generico |
| 2 | Max instances atingido |
| 3 | PR nao encontrada |
| 4 | Health check falhou |
By Borlot.com.br on 12/02/2026