@zenifra/cli 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -2
- package/bin/zenifra.mjs +834 -77
- package/examples/http-autoscaling-project.json +30 -0
- package/examples/http-github-project.json +1 -0
- package/examples/http-project.json +1 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ zenifra auth login --profile staging --code 123456
|
|
|
40
40
|
zenifra auth api-key --key znf_sua_chave
|
|
41
41
|
zenifra auth api-key --profile prod --key znf_sua_chave
|
|
42
42
|
zenifra auth logout
|
|
43
|
+
zenifra auth logout --revoke
|
|
43
44
|
zenifra profile list
|
|
44
45
|
zenifra profile show
|
|
45
46
|
zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode api-key --key znf_sua_chave
|
|
@@ -54,6 +55,7 @@ zenifra plans --type storage --json
|
|
|
54
55
|
zenifra create project
|
|
55
56
|
zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
|
|
56
57
|
zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
|
|
58
|
+
zenifra create project --name <name> --plan premium --payment-mode hourly --config @examples/http-autoscaling-project.json
|
|
57
59
|
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
|
|
58
60
|
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
|
|
59
61
|
zenifra projects --type http --page 1 --limit 15
|
|
@@ -67,19 +69,48 @@ zenifra project envs --project <project-id>
|
|
|
67
69
|
zenifra project env add --project <project-id> --name NODE_ENV --value production
|
|
68
70
|
zenifra project env update --project <project-id> --name NODE_ENV --value staging
|
|
69
71
|
zenifra project env remove --project <project-id> --name NODE_ENV
|
|
72
|
+
zenifra project autoscaling --project <project-id>
|
|
73
|
+
zenifra project autoscaling set --project <project-id> --min 2 --max 8 --cpu 70 --memory 80
|
|
74
|
+
zenifra project autoscaling disable --project <project-id>
|
|
75
|
+
zenifra project autoscaling events --project <project-id> --direction scale_up --page 1 --limit 10
|
|
76
|
+
zenifra project billing usage --project <project-id> --from 2026-06-01T00:00:00Z --limit 20
|
|
70
77
|
zenifra project instances --project <project-id>
|
|
71
78
|
zenifra project instances set --project <project-id> --count 3
|
|
72
79
|
zenifra builds --project <project-id>
|
|
80
|
+
zenifra builds logs --project <project-id> --build <build-id>
|
|
81
|
+
zenifra builds logs --project <project-id> --build <build-id> --follow
|
|
73
82
|
zenifra deployments --project <project-id>
|
|
74
83
|
zenifra deploy --project <project-id> --branch main
|
|
75
84
|
zenifra deploy watch --project <project-id> --build <build-id>
|
|
76
85
|
```
|
|
77
86
|
|
|
87
|
+
## Builds GitHub
|
|
88
|
+
|
|
89
|
+
Use `zenifra builds` para listar o historico de builds e `zenifra builds logs` para ler os logs do pipeline GitHub de um build especifico.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
zenifra builds --project <project-id>
|
|
93
|
+
zenifra builds logs --project <project-id> --build <build-id>
|
|
94
|
+
zenifra builds logs --project <project-id> --build <build-id> --follow
|
|
95
|
+
zenifra deploy --project <project-id> --branch main
|
|
96
|
+
zenifra deploy watch --project <project-id> --build <build-id>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Fluxos:
|
|
100
|
+
|
|
101
|
+
- `zenifra project logs`: logs da aplicacao em execucao
|
|
102
|
+
- `zenifra builds logs`: logs do build GitHub
|
|
103
|
+
- `zenifra deploy`: dispara o build/deploy GitHub e retorna o `build_id`
|
|
104
|
+
- `zenifra deploy watch`: usa esse `build_id` para acompanhar o build em tempo real e imprimir os logs incrementais ate o fim
|
|
105
|
+
|
|
106
|
+
Se voce rodar apenas `zenifra deploy`, a CLI mostra a ajuda especifica do comando com uso, flags, exemplos e exemplo de retorno.
|
|
107
|
+
|
|
78
108
|
## Configuracao
|
|
79
109
|
|
|
80
110
|
- API padrao: `https://api.zenifra.com/v1`
|
|
81
111
|
- Override de API: `ZENIFRA_API_URL=https://api-stg.zenifra.com/v1`
|
|
82
112
|
- API key global: `ZENIFRA_API_KEY=znf_sua_chave`
|
|
113
|
+
- Timeout de cada request HTTP: `ZENIFRA_HTTP_TIMEOUT_MS=30000`
|
|
83
114
|
- Store local de perfis: `~/.config/zenifra-cli/profiles.json`
|
|
84
115
|
- Override do diretorio local: `ZENIFRA_CONFIG_DIR=/path/custom`
|
|
85
116
|
|
|
@@ -126,10 +157,12 @@ Regras de precedencia:
|
|
|
126
157
|
- `ZENIFRA_API_URL` sobrescreve a API base do perfil ativo apenas para a execucao atual
|
|
127
158
|
- `auth login` e `auth api-key` operam no perfil ativo por padrao
|
|
128
159
|
- `auth login --profile <name>` e `auth api-key --profile <name>` atualizam ou criam outro perfil e o tornam ativo
|
|
160
|
+
- `auth logout` remove somente a autenticacao local; `auth logout --revoke` tambem invalida as sessoes de login do usuario no servidor
|
|
161
|
+
- `auth logout --revoke` exige um perfil autenticado por login e nao revoga API keys
|
|
129
162
|
|
|
130
163
|
Migracao:
|
|
131
164
|
|
|
132
|
-
- se existir `session.json` legado e ainda nao existir `profiles.json`, a CLI migra automaticamente a sessao antiga para um perfil `default`
|
|
165
|
+
- se existir `session.json` legado e ainda nao existir `profiles.json`, a CLI migra automaticamente a sessao antiga para um perfil `default` e remove o arquivo legado
|
|
133
166
|
|
|
134
167
|
## Automacao com API key
|
|
135
168
|
|
|
@@ -147,7 +180,7 @@ Tambem e possivel salvar a chave localmente no perfil ativo:
|
|
|
147
180
|
zenifra auth api-key --key znf_sua_chave
|
|
148
181
|
```
|
|
149
182
|
|
|
150
|
-
API 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.
|
|
183
|
+
API keys globais ja sao vinculadas a uma organizacao, entao comandos como `projects`, `deploy`, `builds`, `builds logs` 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.
|
|
151
184
|
|
|
152
185
|
Para reduzir impacto de vazamento, configure IPs permitidos na criacao da API key sempre que a automacao tiver origem fixa.
|
|
153
186
|
|
|
@@ -157,6 +190,7 @@ Use os arquivos em `examples/` como base para `zenifra create project`:
|
|
|
157
190
|
|
|
158
191
|
- `examples/http-project.json`: projeto HTTP com imagem OCI publica
|
|
159
192
|
- `examples/http-github-project.json`: projeto HTTP com build via GitHub
|
|
193
|
+
- `examples/http-autoscaling-project.json`: projeto HTTP pago criado com auto-scaling
|
|
160
194
|
- `examples/postgresql-project.json`: projeto PostgreSQL
|
|
161
195
|
- `examples/mariadb-project.json`: projeto MariaDB
|
|
162
196
|
|
|
@@ -173,21 +207,39 @@ O wizard atual cobre:
|
|
|
173
207
|
- projetos `mariadb`
|
|
174
208
|
|
|
175
209
|
`zenifra create project` nao assume valores default para `--plan` e `--payment-mode`.
|
|
210
|
+
Configs HTTP nao interativas tambem devem informar `config.exposure`; use `public` para criar rota/dominio publico ou `private` para manter a aplicacao sem exposicao na internet.
|
|
176
211
|
Antes de escolher um plano com o usuario, compare os catalogos com `zenifra plans` para evitar suposicoes sobre custo.
|
|
177
212
|
|
|
178
213
|
Valores aceitos:
|
|
179
214
|
|
|
180
215
|
- `payment_mode`: `hourly`, `monthly`, `yearly`
|
|
181
216
|
- `type_project` no `config`: `http`, `postgresql`, `mariadb`
|
|
217
|
+
- `exposure` no `config` HTTP: `public`, `private`
|
|
182
218
|
- `plan`: `free`, `static`, `basic`, `premium`, `premium_plus`, `business`, `deep_learning_basic`, `deep_learning_premium`, `db-free`, `db-starter`, `db-basic`, `db-premium`, `db-enterprise`
|
|
183
219
|
- `config.github.runtime` (quando houver GitHub em projeto HTTP): `nodejs` ou `python`
|
|
220
|
+
- `config.autoscaling` (somente HTTP pago): `enabled: true`, `max_instances` maior ou igual a `config.instances` e alvos opcionais de CPU/memoria entre 1 e 100
|
|
184
221
|
|
|
185
222
|
Observacoes do wizard:
|
|
186
223
|
|
|
187
224
|
- conflitos entre documentacao e API sao validados pelo contrato real aceito pela API
|
|
225
|
+
- o wizard oferece auto-scaling apenas quando o plano selecionado informa essa disponibilidade
|
|
226
|
+
- na criacao com auto-scaling, `config.instances` e o minimo inicial e `config.autoscaling.max_instances` e o maximo
|
|
188
227
|
- em projetos de banco, o wizard nao pergunta `username`, `password` nem `database name`
|
|
189
228
|
- em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API
|
|
190
229
|
|
|
230
|
+
## Regressao manual de auto-scaling em staging
|
|
231
|
+
|
|
232
|
+
O teste de staging cria projetos, gera trafego, consulta consumo e remove somente os projetos criados pela propria execucao. Ele rejeita a API de producao e exige habilitacao explicita das mutacoes.
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
export ZENIFRA_API_URL_STG=https://api-stg.zenifra.com/v1
|
|
236
|
+
export ZENIFRA_API_KEY_STG=znf_sua_chave_de_staging
|
|
237
|
+
export ZENIFRA_STAGING_ALLOW_MUTATIONS=1
|
|
238
|
+
npm run test:staging:autoscaling
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Use `ZENIFRA_STAGING_SKIP_HOURLY_WAIT=1` para pular a espera pelo fechamento da janela horaria. Quando a espera esta habilitada, o teste verifica moeda, totais de computacao e armazenamento, instancia-horas e armazenamento persistente faturavel. A execucao pode consumir capacidade e gerar custos no ambiente de staging; o resumo redigido fica em `artifacts/`, que nao e versionado.
|
|
242
|
+
|
|
191
243
|
## Publicacao no npm
|
|
192
244
|
|
|
193
245
|
Este pacote e publicado pelo GitHub Actions usando npm Trusted Publishing. O pacote precisa existir no npm antes de configurar Trusted Publishing.
|