@zenifra/cli 0.2.3 → 0.2.5
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 +52 -4
- package/bin/zenifra.mjs +1169 -67
- package/examples/http-autoscaling-project.json +30 -0
- package/examples/http-github-project.json +1 -0
- package/examples/http-project.json +1 -0
- package/examples/valkey-cache-project.json +14 -0
- package/examples/valkey-key-value-project.json +18 -0
- package/examples/valkey-queue-project.json +18 -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
|
|
@@ -50,14 +51,24 @@ zenifra orgs
|
|
|
50
51
|
zenifra org set
|
|
51
52
|
zenifra plans
|
|
52
53
|
zenifra plans --type http
|
|
54
|
+
zenifra plans --type valkey
|
|
53
55
|
zenifra plans --type storage --json
|
|
54
56
|
zenifra create project
|
|
55
57
|
zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
|
|
56
58
|
zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
|
|
59
|
+
zenifra create project --name <name> --plan premium --payment-mode hourly --config @examples/http-autoscaling-project.json
|
|
57
60
|
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
|
|
58
61
|
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
|
|
62
|
+
zenifra create project --name <name> --plan db-free --payment-mode hourly --config @examples/valkey-key-value-project.json
|
|
63
|
+
zenifra create project --name <name> --plan cache-free --payment-mode hourly --config @examples/valkey-cache-project.json
|
|
64
|
+
zenifra create project --name <name> --plan queue-free --payment-mode hourly --config @examples/valkey-queue-project.json
|
|
59
65
|
zenifra projects --type http --page 1 --limit 15
|
|
66
|
+
zenifra projects --type valkey --page 1 --limit 15
|
|
60
67
|
zenifra project info --project <project-id>
|
|
68
|
+
zenifra valkey status --project <project-id>
|
|
69
|
+
zenifra valkey connection --project <project-id>
|
|
70
|
+
zenifra valkey credentials rotate --project <project-id> --wait
|
|
71
|
+
zenifra valkey credentials status --project <project-id> --operation <operation-id>
|
|
61
72
|
zenifra project url --project <project-id>
|
|
62
73
|
zenifra project logs --project <project-id> --instance <instance-id>
|
|
63
74
|
zenifra project metrics --project <project-id> --instance <instance-id>
|
|
@@ -67,6 +78,11 @@ zenifra project envs --project <project-id>
|
|
|
67
78
|
zenifra project env add --project <project-id> --name NODE_ENV --value production
|
|
68
79
|
zenifra project env update --project <project-id> --name NODE_ENV --value staging
|
|
69
80
|
zenifra project env remove --project <project-id> --name NODE_ENV
|
|
81
|
+
zenifra project autoscaling --project <project-id>
|
|
82
|
+
zenifra project autoscaling set --project <project-id> --min 2 --max 8 --cpu 70 --memory 80
|
|
83
|
+
zenifra project autoscaling disable --project <project-id>
|
|
84
|
+
zenifra project autoscaling events --project <project-id> --direction scale_up --page 1 --limit 10
|
|
85
|
+
zenifra project billing usage --project <project-id> --from 2026-06-01T00:00:00Z --limit 20
|
|
70
86
|
zenifra project instances --project <project-id>
|
|
71
87
|
zenifra project instances set --project <project-id> --count 3
|
|
72
88
|
zenifra builds --project <project-id>
|
|
@@ -103,6 +119,7 @@ Se voce rodar apenas `zenifra deploy`, a CLI mostra a ajuda especifica do comand
|
|
|
103
119
|
- API padrao: `https://api.zenifra.com/v1`
|
|
104
120
|
- Override de API: `ZENIFRA_API_URL=https://api-stg.zenifra.com/v1`
|
|
105
121
|
- API key global: `ZENIFRA_API_KEY=znf_sua_chave`
|
|
122
|
+
- Timeout de cada request HTTP: `ZENIFRA_HTTP_TIMEOUT_MS=30000`
|
|
106
123
|
- Store local de perfis: `~/.config/zenifra-cli/profiles.json`
|
|
107
124
|
- Override do diretorio local: `ZENIFRA_CONFIG_DIR=/path/custom`
|
|
108
125
|
|
|
@@ -117,7 +134,7 @@ zenifra plans --type database
|
|
|
117
134
|
zenifra plans --type storage --json
|
|
118
135
|
```
|
|
119
136
|
|
|
120
|
-
`zenifra plans` funciona sem autenticacao e mostra os catalogos publicos de HTTP, banco e
|
|
137
|
+
`zenifra plans` funciona sem autenticacao e mostra os catalogos publicos de HTTP, banco, armazenamento e Valkey. Use `--type valkey` para consultar Key Value, Cache e Queue.
|
|
121
138
|
|
|
122
139
|
Valores de variaveis de ambiente sao mascarados por padrao, inclusive em `--json`.
|
|
123
140
|
Use `--show-values` apenas quando precisar inspecionar os valores completos.
|
|
@@ -149,10 +166,12 @@ Regras de precedencia:
|
|
|
149
166
|
- `ZENIFRA_API_URL` sobrescreve a API base do perfil ativo apenas para a execucao atual
|
|
150
167
|
- `auth login` e `auth api-key` operam no perfil ativo por padrao
|
|
151
168
|
- `auth login --profile <name>` e `auth api-key --profile <name>` atualizam ou criam outro perfil e o tornam ativo
|
|
169
|
+
- `auth logout` remove somente a autenticacao local; `auth logout --revoke` tambem invalida as sessoes de login do usuario no servidor
|
|
170
|
+
- `auth logout --revoke` exige um perfil autenticado por login e nao revoga API keys
|
|
152
171
|
|
|
153
172
|
Migracao:
|
|
154
173
|
|
|
155
|
-
- se existir `session.json` legado e ainda nao existir `profiles.json`, a CLI migra automaticamente a sessao antiga para um perfil `default`
|
|
174
|
+
- 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
|
|
156
175
|
|
|
157
176
|
## Automacao com API key
|
|
158
177
|
|
|
@@ -180,8 +199,12 @@ Use os arquivos em `examples/` como base para `zenifra create project`:
|
|
|
180
199
|
|
|
181
200
|
- `examples/http-project.json`: projeto HTTP com imagem OCI publica
|
|
182
201
|
- `examples/http-github-project.json`: projeto HTTP com build via GitHub
|
|
202
|
+
- `examples/http-autoscaling-project.json`: projeto HTTP pago criado com auto-scaling
|
|
183
203
|
- `examples/postgresql-project.json`: projeto PostgreSQL
|
|
184
204
|
- `examples/mariadb-project.json`: projeto MariaDB
|
|
205
|
+
- `examples/valkey-key-value-project.json`: projeto Valkey Key Value com armazenamento persistente
|
|
206
|
+
- `examples/valkey-cache-project.json`: projeto Valkey Cache sem armazenamento persistente
|
|
207
|
+
- `examples/valkey-queue-project.json`: projeto Valkey Queue com armazenamento persistente
|
|
185
208
|
|
|
186
209
|
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:
|
|
187
210
|
|
|
@@ -194,22 +217,47 @@ O wizard atual cobre:
|
|
|
194
217
|
- projetos `http` com origem `github` ou `oci`
|
|
195
218
|
- projetos `postgresql`
|
|
196
219
|
- projetos `mariadb`
|
|
220
|
+
- projetos `valkey` nos perfis `key_value`, `cache` e `queue`
|
|
197
221
|
|
|
198
222
|
`zenifra create project` nao assume valores default para `--plan` e `--payment-mode`.
|
|
223
|
+
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.
|
|
199
224
|
Antes de escolher um plano com o usuario, compare os catalogos com `zenifra plans` para evitar suposicoes sobre custo.
|
|
200
225
|
|
|
201
226
|
Valores aceitos:
|
|
202
227
|
|
|
203
228
|
- `payment_mode`: `hourly`, `monthly`, `yearly`
|
|
204
|
-
- `type_project` no `config`: `http`, `postgresql`, `mariadb`
|
|
205
|
-
- `
|
|
229
|
+
- `type_project` no `config`: `http`, `postgresql`, `mariadb`, `valkey`
|
|
230
|
+
- `exposure` no `config` HTTP: `public`, `private`
|
|
231
|
+
- `plan`: consulte `zenifra plans` para os planos atuais; Valkey usa `db-*` para Key Value, `cache-*` para Cache e `queue-*` para Queue
|
|
232
|
+
- `config.profile` em projetos Valkey: `key_value`, `cache` ou `queue`
|
|
233
|
+
- `config.version` em projetos Valkey: a versão retornada por `zenifra plans --type valkey`
|
|
234
|
+
- `config.storage` em projetos Valkey: obrigatório e persistente para Key Value/Queue; omitido para Cache
|
|
206
235
|
- `config.github.runtime` (quando houver GitHub em projeto HTTP): `nodejs` ou `python`
|
|
236
|
+
- `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
|
|
207
237
|
|
|
208
238
|
Observacoes do wizard:
|
|
209
239
|
|
|
210
240
|
- conflitos entre documentacao e API sao validados pelo contrato real aceito pela API
|
|
241
|
+
- o wizard oferece auto-scaling apenas quando o plano selecionado informa essa disponibilidade
|
|
242
|
+
- na criacao com auto-scaling, `config.instances` e o minimo inicial e `config.autoscaling.max_instances` e o maximo
|
|
211
243
|
- em projetos de banco, o wizard nao pergunta `username`, `password` nem `database name`
|
|
212
244
|
- em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API
|
|
245
|
+
- em projetos Valkey, a capacidade é definida pelo plano e a CLI não pergunta instâncias, imagem, variáveis de ambiente ou exposição HTTP
|
|
246
|
+
- a conexão mascarada pode ser consultada a qualquer momento; a credencial completa aparece apenas na criação ou em uma rotação concluída
|
|
247
|
+
- `valkey credentials rotate` retorna uma operação assíncrona; use `--wait` ou `valkey credentials status` para acompanhar
|
|
248
|
+
|
|
249
|
+
## Regressao manual de auto-scaling em staging
|
|
250
|
+
|
|
251
|
+
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.
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
export ZENIFRA_API_URL_STG=https://api-stg.zenifra.com/v1
|
|
255
|
+
export ZENIFRA_API_KEY_STG=znf_sua_chave_de_staging
|
|
256
|
+
export ZENIFRA_STAGING_ALLOW_MUTATIONS=1
|
|
257
|
+
npm run test:staging:autoscaling
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
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.
|
|
213
261
|
|
|
214
262
|
## Publicacao no npm
|
|
215
263
|
|