CLI de Deploy e Automação
A CLI da Zenifra permite listar projetos, criar recursos e disparar deploys a partir do terminal, scripts e pipelines.
Permissões necessárias
| Comando/ação | Scope mínimo |
|---|---|
| Listar ou visualizar projeto | project.read em project:<project-id> |
| Criar projeto HTTP ou Job | project.create em organization:* |
| Criar banco (PostgreSQL, MariaDB ou Analytics) | database.create em organization:* |
| Criar projeto Valkey (Key-Value, Cache ou Queue) | managed_service.create em organization:* |
| Disparar deploy | project.deploy.trigger em project:<project-id> |
| Acompanhar builds e logs | project.logs.read em project:<project-id> |
| Parar projeto | project.stop em project:<project-id> |
| Retomar projeto | project.resume em project:<project-id> |
| Excluir projeto | project.delete em project:<project-id> |
owner tem acesso completo. assistant, member e API Keys precisam dos grants correspondentes.
Esta página resume os comandos de deploy e automação. Para a referência completa da ferramenta, acesse CLI da Zenifra.
Use a CLI quando você quer operar a Zenifra sem abrir o console: criar um projeto, consultar o catálogo de planos, listar recursos, disparar deploys e acompanhar builds.
Começo rápido
npm install -g @zenifra/cli
zenifra auth login
zenifra whoami
zenifra projects --type http --page 1 --limit 15
zenifra create project
zenifra deploy --project <project-id> --branch main
zenifra deploy watch --project <project-id> --build <build-id>Em projetos Git, zenifra deploy dispara a build e retorna build_id. Em seguida, zenifra deploy watch acompanha status e logs incrementais até o fim.
Para ver todos os comandos disponíveis:
zenifra --help
zenifra help create projectComandos incompletos como zenifra deploy, zenifra deploy watch e zenifra builds abrem a ajuda específica do próprio comando.
Autenticação
Login de usuário
Use login de usuário para navegar entre organizações:
zenifra auth login
zenifra orgs
zenifra org setzenifra auth login usa o fluxo tradicional de email, senha e verificação. Esse modo é indicado para uso interativo no terminal.
Login OAuth
Use OAuth quando quiser autenticar pelo navegador:
zenifra auth login --oauth
zenifra auth login --oauth --no-browserO primeiro comando abre o navegador automaticamente. Com --no-browser, a CLI mostra o endereço para abrir manualmente. Nos dois casos, o navegador e a CLI precisam estar na mesma máquina: o retorno OAuth é concluído por um callback loopback local. Se não houver uma sessão gráfica nessa máquina ou não for possível concluir o callback local, use uma API key da organização no ambiente de execução.
API key para automação
Para CI/CD e jobs server-side, crie uma API key da organização e use:
export ZENIFRA_API_KEY=znf_sua_chave
zenifra projects --type http --page 1 --limit 15
zenifra deploy --project <project-id> --branch mainTambém é possível salvar a chave na sessão local:
zenifra auth api-key --key znf_sua_chaveAPI keys já carregam a organização vinculada. Por isso, comandos de automação não exigem org set.
Criar projeto pelo terminal
Rode zenifra create project sem flags quando quiser seguir o wizard interativo. Ele pergunta os campos necessários, mostra exemplos e deixa explícito quais valores precisam ser informados.
$ zenifra create project
Wizard interativo de criacao de projeto Zenifra
Digite ? para ajuda detalhada em qualquer campo.
? Nome do projeto: app-api
? Descricao: API principal do produto
? Tipo do projeto: http
? Plano: free
? Modo de pagamento: hourly
? Origem do deploy HTTP: github
? Porta da aplicacao: 3000
? Quantidade de instancias: 1
? Deseja adicionar variaveis de ambiente? sim
? Nome da env: NODE_ENV
? Valor da env: production
? Deseja adicionar mais um item? nao
? Exposicao HTTP: public
? Repository owner: minha-org
? Repository name: app-api
? Branch: main
? Runtime: nodejs
? Versao do runtime: 24
? Modo de deploy GitHub: branch
? Start command: npm start
? Pre build command:
? Build command: npm run build
Resumo da criacao
projeto: app-api | plano: free | pagamento: hourly
tipo: http
descricao: API principal do produto
http: exposicao public | porta 3000 | instancias 1 | storage 1Gi (efemero)
github: minha-org/app-api@main | runtime nodejs@24
? Confirmar criacao do projeto: sim
Campo Valor
------- --------------------------------------
Projeto 507f1f77bcf86cd799439012
Dominio https://app-api.clients.zenifra.comO comando acima é uma simulação do fluxo. As perguntas variam conforme o plano: no Free, o wizard não pergunta armazenamento persistente, auto-scaling nem subdomínio personalizado. O wizard oferece as origens github e oci; para uma origem Forgejo, use --config com source e build, como no exemplo abaixo. Os valores reais devem refletir seu repositório, plano, porta, runtime e variáveis. A URL retornada pelo comando é a fonte de verdade para acessar o projeto; não construa uma URL supondo um domínio padrão.
Exemplos comuns
Listar projetos HTTP:
zenifra projects --type http --page 1 --limit 15A listagem de projetos é paginada por padrão com 15 itens por página. Para navegar, use --page <n>; para automações que precisam de outro tamanho, use --limit <n>.
Criar projeto a partir de um arquivo de configuração:
zenifra create project \
--name app-api \
--plan free \
--payment-mode hourly \
--config @http-project.jsonPara uma origem Git, o arquivo de configuração usa source e build. Os identificadores abaixo são exemplos: substitua-os pelos IDs retornados pela conexão e pela seleção de repositório da organização.
{
"type_project": "http",
"exposure": "public",
"source": {
"connection_id": "connection-id-from-console",
"repository_id": "repository-id-from-connection",
"branch": "main",
"auto_deploy": true
},
"build": {
"runtime": "nodejs",
"version": "24",
"start_command": "npm start",
"pre_build_command": null,
"build_command": "npm run build"
},
"port": 3000
}Não inclua um token de repositório no arquivo de projeto. Configure conexões de origem pelo fluxo seguro de conexão da organização. Para Forgejo, consulte Deploy a partir do Forgejo e a referência de conexões Git.
Em APIs mais antigas, comprovar que um projeto existente usa uma origem GitHub pode exigir project.read. A CLI não interpreta uma resposta de acesso negado como confirmação da origem nem tenta uma rota alternativa. Forgejo requer uma API que anuncie o contrato de origem Git compatível.
No arquivo de configuração de projetos HTTP, informe exposure: "public" para criar rota/domínio público ou exposure: "private" para manter a aplicação sem exposição na internet.
Depois da criação, altere a exposição com:
zenifra project exposure set --project <project-id> --exposure public
zenifra project exposure set --project <project-id> --exposure privateUse private para automações, jobs internos e aplicações que não precisam receber tráfego público.
Disparar deploy:
zenifra deploy --project <project-id> --branch mainAcompanhar esse build:
zenifra deploy watch --project <project-id> --build <build-id>Reabrir logs de um build específico:
zenifra builds logs --project <project-id> --build <build-id>
zenifra builds logs --project <project-id> --build <build-id> --followListar builds já existentes:
zenifra builds --project <project-id>Use builds quando você precisa descobrir build_id. Use deploy watch quando já tem um build específico para acompanhar.
As entradas detalhadas de logs usam a fonte event e preservam a etapa e a sequência da build. Se só houver um diagnóstico final, a fonte summary informa que os eventos detalhados não estavam disponíveis para aquela build.
Consultar planos antes de criar:
zenifra plans --type httpA saída para pessoas lista as capacidades disponíveis no plano, como logs, métricas, healthcheck, auto-scaling, subdomínio personalizado e acesso de rede. Para automações, use zenifra plans --type http --json: o objeto capabilities retorna essas disponibilidades como valores booleanos. Consulte o plano antes de criar o projeto, porque as capacidades efetivas dependem do plano retornado.
Identidade e ciclo de vida do projeto
Veja a identidade segura da sessão e a organização selecionada:
zenifra whoami
zenifra whoami --jsonO formato legível mostra nome do perfil, base da API, modo de autenticação, organização selecionada e, quando disponível, o nome público da organização. O formato JSON entrega os mesmos dados para scripts e nunca mostra credenciais.
Pare, retome ou exclua um projeto pelo identificador retornado pela criação ou pela listagem:
zenifra project stop --project <project-id>
zenifra project resume --project <project-id>
zenifra project delete --project <project-id> --yesstop e resume consultam o projeto depois da operação para mostrar o estado confirmado. A exclusão exige --yes, inclusive em automações, para deixar a intenção destrutiva explícita. Todos os três comandos aceitam --json quando a saída será processada por outro programa.
Segurança
- use
ZENIFRA_API_KEYem secrets do provedor de CI; - configure IP allowlist quando o runner tem IP fixo;
- conceda apenas as permissões necessárias;
- rotacione e revogue chaves antigas.
Próximos passos
Última atualização em
Registry privado
Configure deploy de imagens privadas na Zenifra usando AWS ECR ou credenciais de usuário e token/senha do registry.
Atualização automática por branch
Entenda o deploy automático por branch em projetos Git e como os modos de atualização do GitHub e do Forgejo controlam publicações por branch, tag ou release.