CLI oficial da Zenifra para autenticar, selecionar organizacao, listar projetos e disparar deployments.
Instale pelo npm:
npm install -g @zenifra/cli
zenifra --helpPara desenvolvimento local:
npm link
zenifra --help
zenifra help project logsOu sem link:
node bin/zenifra.mjs --helpCada comando tem ajuda especifica com exemplos de uso e retorno:
zenifra project logs --help
zenifra help project env addzenifra auth login
zenifra auth login --profile staging --code 123456
zenifra auth api-key --key znf_sua_chave
zenifra auth api-key --profile prod --key znf_sua_chave
zenifra auth logout
zenifra profile list
zenifra profile show
zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode api-key --key znf_sua_chave
zenifra profile use staging
zenifra profile edit staging --description "Homologacao interna"
zenifra profile remove staging
zenifra orgs
zenifra org set
zenifra plans
zenifra plans --type http
zenifra plans --type storage --json
zenifra create project
zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
zenifra projects --type http
zenifra project info --project <project-id>
zenifra project url --project <project-id>
zenifra project logs --project <project-id> --instance <instance-id>
zenifra project metrics --project <project-id> --instance <instance-id>
zenifra project network --project <project-id> --view summary
zenifra project image set --project <project-id> --image ghcr.io/zenifra/app:tag
zenifra project envs --project <project-id>
zenifra project env add --project <project-id> --name NODE_ENV --value production
zenifra project env update --project <project-id> --name NODE_ENV --value staging
zenifra project env remove --project <project-id> --name NODE_ENV
zenifra project instances --project <project-id>
zenifra project instances set --project <project-id> --count 3
zenifra builds --project <project-id>
zenifra deployments --project <project-id>
zenifra deploy --project <project-id> --branch main
zenifra deploy watch --project <project-id> --build <build-id>- API padrao:
https://api.zenifra.com/v1 - Override de API:
ZENIFRA_API_URL=https://api-stg.zenifra.com/v1 - API key global:
ZENIFRA_API_KEY=znf_sua_chave - Store local de perfis:
~/.config/zenifra-cli/profiles.json - Override do diretorio local:
ZENIFRA_CONFIG_DIR=/path/custom
Todos os comandos de listagem aceitam --json.
Para comparar custo antes de criar um projeto, use:
zenifra plans
zenifra plans --type http
zenifra plans --type database
zenifra plans --type storage --jsonzenifra plans funciona sem autenticacao e mostra os catalogos publicos de HTTP, banco e armazenamento.
Valores de variaveis de ambiente sao mascarados por padrao, inclusive em --json.
Use --show-values apenas quando precisar inspecionar os valores completos.
A CLI agora trabalha com um perfil ativo. Cada perfil pode ter:
name: identificador tecnico usado nos comandosdescription: descricao livreapiBaseUrl: API da Zenifra para aquele ambiente- credencial:
api_keypara automacao organizacionalaccess_tokenpara login pessoal, comselectedOrganizationId
Exemplos:
zenifra profile add --name prod --description Producao --api-base https://api.zenifra.com/v1 --mode api-key --key znf_sua_chave
zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode login
zenifra profile list
zenifra profile show staging
zenifra profile use prodRegras de precedencia:
ZENIFRA_API_KEYsobrescreve a credencial do perfil ativo apenas para a execucao atualZENIFRA_API_URLsobrescreve a API base do perfil ativo apenas para a execucao atualauth logineauth api-keyoperam no perfil ativo por padraoauth login --profile <name>eauth api-key --profile <name>atualizam ou criam outro perfil e o tornam ativo
Migracao:
- se existir
session.jsonlegado e ainda nao existirprofiles.json, a CLI migra automaticamente a sessao antiga para um perfildefault
Crie uma API key global no painel da organizacao e use-a em jobs, pipelines e scripts:
export ZENIFRA_API_KEY=znf_sua_chave
zenifra projects --type http
zenifra deploy --project <project-id> --branch mainTambem e possivel salvar a chave localmente no perfil ativo:
zenifra auth api-key --key znf_sua_chaveAPI keys globais ja sao vinculadas a uma organizacao, entao comandos como projects, deploy, builds e deployments nao precisam de org set. Comandos pessoais como orgs e org set continuam exigindo zenifra auth login em um perfil com token de usuario.
Para reduzir impacto de vazamento, configure IPs permitidos na criacao da API key sempre que a automacao tiver origem fixa.
Use os arquivos em examples/ como base para zenifra create project:
examples/http-project.json: projeto HTTP com imagem OCI publicaexamples/http-github-project.json: projeto HTTP com build via GitHubexamples/postgresql-project.json: projeto PostgreSQLexamples/mariadb-project.json: projeto MariaDB
Se voce rodar apenas zenifra create project, a CLI abre um wizard interativo estilo npm init e pergunta todos os campos guiados. Cada pergunta mostra:
- se o campo e obrigatorio ou opcional
- exemplos de valores aceitos
- link da documentacao relacionada
O wizard atual cobre:
- projetos
httpcom origemgithubouoci - projetos
postgresql - projetos
mariadb
zenifra create project nao assume valores default para --plan e --payment-mode.
Antes de escolher um plano com o usuario, compare os catalogos com zenifra plans para evitar suposicoes sobre custo.
Valores aceitos:
payment_mode:hourly,monthly,yearlytype_projectnoconfig:http,postgresql,mariadbplan:free,static,basic,premium,premium_plus,business,deep_learning_basic,deep_learning_premium,db-free,db-starter,db-basic,db-premium,db-enterpriseconfig.github.runtime(quando houver GitHub em projeto HTTP):nodejsoupython
Observacoes do wizard:
- conflitos entre documentacao e API sao validados pelo contrato real aceito pela API
- em projetos de banco, o wizard nao pergunta
username,passwordnemdatabase name - em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API
Este pacote e publicado pelo GitHub Actions usando npm Trusted Publishing. O pacote precisa existir no npm antes de configurar Trusted Publishing.
Como @zenifra/cli e um pacote scoped publico, faca o primeiro publish autenticado no npm:
npm login
npm publish --access public- Em npmjs.com, configure o pacote
@zenifra/clicom Trusted Publisher:- Organization/user:
zenifra - Repository:
zenifra-cli - Workflow filename:
publish.yml - Environment:
npm - Allowed action:
npm publish
- Organization/user:
- Garanta que o repositorio GitHub esteja publico para gerar provenance automatica.
- Crie uma release tag semver:
npm version patch
git push origin main --follow-tagsTags v* disparam .github/workflows/publish.yml, que roda npm ci, npm run check, npm test, npm pack --dry-run e npm publish --access public.