runner edit
Edita a configuracao de uma aplicacao registrada, como a branch trackeada.
Sintaxe
runner edit <APP> [OPTIONS]Argumentos
| Argumento | Descricao |
|---|---|
APP |
Caminho ou identificador da app (ex: runner-docs/front, /apps/meu-app) |
Opcoes
| Opcao | Descricao |
|---|---|
-b, --branch <BRANCH> |
Altera a branch trackeada (ex: dev, main, dist) |
-i, --instance <NOME> |
Define a instancia deployada (ex: production, staging) |
--token <TOKEN> |
Registra token do GitHub para repo privado (criptografado no state) |
--remove-token |
Remove o token armazenado |
--token-stdin |
Le o token do STDIN em vez de argv — fora do ps e do history (v2.129.0+). printf %s "$TOKEN" | runner edit <app> --token-stdin |
--allow-broad-token |
Aceita token com escopo sensivel (admin:*, workflow...). Sem a flag a troca e RECUSADA — mesma guarda do add (v2.129.0+) |
--show |
Mostra a configuracao atual |
--pull |
Faz pull da nova branch apos alterar (default: true) |
-x, --exact |
Exige match exato do nome da app (sem fallback por prefixo) |
Exemplos
Ver configuracao atual
runner edit runner-docs/front --showSaida:
App Configuration: runner-docs/front
─────────────────────────────
Path: /apps/runner-docs
Branch: main
Version: v1.0.0
Status: atualizadoMudar para branch dev
runner edit runner-docs/front --branch devSaida:
Changing branch: main → dev
✓ Git repository found
✓ Branch 'dev' exists on remote
✓ Branch contains .deploy.yml
✓ State updated
✓ Branch 'dev' is now active
Done! Run 'runner fetch' to check for updates.Mudar branch sem fazer pull
runner edit runner-docs/front --branch main --pull falseApenas atualiza o state file, sem executar git checkout/pull.
Validacoes
O comando realiza tres validacoes antes de alterar a branch:
- Repositorio ativo - Localiza o clone da app. Desde a v2.60.1 procura em
<app>/pull/(layout v1.2.3+) e, se nao achar, na raiz<app>/(apps do layout legado) - Branch existe - Verifica se a branch existe no remote via
git ls-remote, com a mesma credencial do registro que ofetchusa (v2.151.0+). Se o remoto não responde, o erro énão consegui consultar o remoto: <erro>, e não "branch inexistente". Antes da v2.151.0, a consulta ia sem credencial: em repo privado com token registrado, o comando recusava uma branch que existia - Contem .deploy.yml - Verifica se a branch contem o arquivo de configuracao
Se qualquer validacao falhar, a alteracao e cancelada:
✗ Error: Branch 'inexistente' does not exist on remote
Available branches:
origin/dev
origin/main
origin/distAntes da v2.60.1
Em apps do layout pull/ (todo app registrado a partir da v1.2.3) o comando abortava sempre na
primeira validacao:
✗ Error: No git repository found at "/data/apps/minha-app"
This app is not a git repository.Nao havia como trocar a branch de uma app ja registrada — a saida era unregister + add, que
derruba os containers e apaga o diretorio. Se voce ver esse erro, atualize o runner:
runner self-updateA mesma versao corrigiu a troca para uma branch que nao esta no refspec do clone (o pull/ e
criado com clone --branch X --depth 1, entao so a branch rastreada e buscada) e o --pull com
worktree sujo, que deixava o state numa branch e o clone em outra.
Fluxo de Uso
Apos alterar a branch, execute fetch para verificar atualizacoes:
# 1. Mudar branch
runner edit runner-docs/front --branch dev
# 2. Verificar atualizacoes
runner fetch runner-docs/front
# 3. Deploy se necessario
runner deploy runner-docs/frontState File
O comando modifica o arquivo de state em /opt/runner/state/{app}.yml:
app_path: /apps/runner-docs
project: runner-docs
system: front
dist_branch: dev # <- alterado pelo edit
current_version: v1.0.0
status: atualizadoCasos de Uso
Testar versao de desenvolvimento
# Mudar para dev
runner edit meu-app/front --branch dev
runner fetch --deploy
# Depois de testar, voltar para main
runner edit meu-app/front --branch main
runner fetch --deployDeploy de branch especifica
# Deploy de uma feature branch
runner edit meu-app/sys --branch feature/nova-api
runner deploy meu-app/sys
# Rollback para dist
runner edit meu-app/sys --branch dist
runner deploy meu-app/sysDisponibilidade
- Adicionado em: v1.2.2-rc.8
Veja Tambem
A troca de instancia e recusada com container no ar (v2.80.2+)
--instance recusa a troca quando ha container rodando na instancia atual, nomeando
os containers e as duas saidas:
meu-app tem 1 container(s) rodando em 'production':
- meu_app_production_v2-5-1
Trocar só o state deixaria containers e rota órfãos.
Para migrar preservando o serviço:
runner switch-instance meu-app --to staging
Para editar mesmo assim, derrube a instância antes:
runner destroy meu-app -i productionO motivo: a instancia entra no nome do container e no arquivo de rota do Traefik. Trocar so o state produz split-brain — o state aponta para uma coisa, o que roda e outra, e o proximo deploy sobe o segundo conjunto ao lado do primeiro.
A troca passa quando nao ha o que migrar: app recem-registrado (sem instancia configurada), instancia igual a atual, ou nenhum container no ar (nunca deployado, ou instancia ja derrubada).
Para migrar de verdade, use `runner switch-instance`, que faz edit + deploy + destroy sob um unico lock, com rollback.