@zenifra/cli 0.4.0 → 0.6.0
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 +70 -9
- package/bin/zenifra.mjs +1171 -62
- package/examples/http-git-project.json +38 -0
- package/examples/job-project.json +20 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -54,9 +54,16 @@ zenifra plans
|
|
|
54
54
|
zenifra plans --type http
|
|
55
55
|
zenifra plans --type valkey
|
|
56
56
|
zenifra plans --type storage --json
|
|
57
|
+
zenifra git providers
|
|
58
|
+
zenifra git runtimes
|
|
59
|
+
zenifra git connections
|
|
60
|
+
zenifra git repositories resolve --connection <connection-id> --path equipe/aplicacao
|
|
61
|
+
zenifra git branches --connection <connection-id> --repository <repository-id>
|
|
62
|
+
zenifra plans --type job
|
|
57
63
|
zenifra create project
|
|
58
64
|
zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
|
|
59
65
|
zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
|
|
66
|
+
zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-git-project.json
|
|
60
67
|
zenifra create project --name <name> --plan premium --payment-mode hourly --config @examples/http-autoscaling-project.json
|
|
61
68
|
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
|
|
62
69
|
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
|
|
@@ -64,6 +71,7 @@ zenifra create project --name <name> --plan analytics-starter --payment-mode hou
|
|
|
64
71
|
zenifra create project --name <name> --plan db-free --payment-mode hourly --config @examples/valkey-key-value-project.json
|
|
65
72
|
zenifra create project --name <name> --plan cache-free --payment-mode hourly --config @examples/valkey-cache-project.json
|
|
66
73
|
zenifra create project --name <name> --plan queue-free --payment-mode hourly --config @examples/valkey-queue-project.json
|
|
74
|
+
zenifra create project --name nightly-report --plan job-basic --payment-mode per_minute --config @examples/job-project.json
|
|
67
75
|
zenifra projects --type http --page 1 --limit 15
|
|
68
76
|
zenifra projects --type valkey --page 1 --limit 15
|
|
69
77
|
zenifra project info --project <project-id>
|
|
@@ -76,12 +84,18 @@ zenifra valkey credentials rotate --project <project-id> --wait
|
|
|
76
84
|
zenifra valkey credentials status --project <project-id> --operation <operation-id>
|
|
77
85
|
zenifra project url --project <project-id>
|
|
78
86
|
zenifra project logs --project <project-id> --instance <instance-id>
|
|
87
|
+
zenifra project runs --project <project-id> --page 1 --limit 20
|
|
88
|
+
zenifra project runs cancel --project <project-id> --run <run-id>
|
|
89
|
+
zenifra project runs logs --project <project-id> --run <run-id>
|
|
79
90
|
zenifra project metrics --project <project-id> --instance <instance-id>
|
|
80
91
|
zenifra project metrics capabilities --project <project-id>
|
|
81
92
|
zenifra project network --project <project-id> --view summary
|
|
82
93
|
zenifra project image set --project <project-id> --image ghcr.io/zenifra/app:tag
|
|
83
94
|
zenifra project github --project <project-id>
|
|
84
95
|
zenifra project github deploy-settings set --project <project-id> --mode branch
|
|
96
|
+
zenifra project source --project <project-id>
|
|
97
|
+
zenifra project source branches --project <project-id>
|
|
98
|
+
zenifra project source deploy-settings set --project <project-id> --mode branch
|
|
85
99
|
zenifra project github deploy-settings set --project <project-id> --mode tag --tag-pattern "v*"
|
|
86
100
|
zenifra project github deploy-settings set --project <project-id> --mode release --tag-pattern "v*" --include-prereleases true
|
|
87
101
|
zenifra project envs --project <project-id>
|
|
@@ -138,9 +152,9 @@ zenifra project metrics capabilities --project <project-id> --json
|
|
|
138
152
|
|
|
139
153
|
---
|
|
140
154
|
|
|
141
|
-
## Builds
|
|
155
|
+
## Builds e deployments Git
|
|
142
156
|
|
|
143
|
-
Use `zenifra builds` para listar o historico de builds e `zenifra builds logs` para ler os logs
|
|
157
|
+
Use `zenifra builds` para listar o historico de builds e `zenifra builds logs` para ler os logs de um build de projeto com origem Git.
|
|
144
158
|
|
|
145
159
|
```bash
|
|
146
160
|
zenifra builds --project <project-id>
|
|
@@ -153,10 +167,37 @@ zenifra deploy watch --project <project-id> --build <build-id>
|
|
|
153
167
|
Fluxos:
|
|
154
168
|
|
|
155
169
|
- `zenifra project logs`: logs da aplicacao em execucao
|
|
156
|
-
- `zenifra builds logs`: logs do build
|
|
157
|
-
- `zenifra deploy`: dispara o build/deploy
|
|
170
|
+
- `zenifra builds logs`: logs do build Git
|
|
171
|
+
- `zenifra deploy`: dispara o build/deploy Git e retorna o `build_id`
|
|
158
172
|
- `zenifra deploy watch`: usa esse `build_id` para acompanhar o build em tempo real e imprimir os logs incrementais ate o fim
|
|
159
173
|
|
|
174
|
+
Para criar um projeto HTTP com uma origem Git Forgejo, primeiro uma pessoa proprietaria da organizacao cria a conexao no Console. A CLI lista e usa conexoes existentes; ela nao solicita nem exibe credenciais do provedor.
|
|
175
|
+
|
|
176
|
+
Use os catalogos para conferir provedores, capacidades e runtimes, depois resolva o caminho explicito do repositorio. O ID opaco retornado pertence a essa conexao e deve ser usado com ela ao listar branches:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
zenifra git providers --json
|
|
180
|
+
zenifra git runtimes
|
|
181
|
+
zenifra git connections --json
|
|
182
|
+
zenifra git repositories resolve --connection <connection-id> --path equipe/aplicacao --json
|
|
183
|
+
zenifra git branches --connection <connection-id> --repository <repository-id>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Use os IDs confirmados em `config.source` e `config.build`, como no arquivo `examples/http-git-project.json`, para criar o projeto. Esse exemplo contem valores ilustrativos e nao credenciais:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
zenifra create project --name api-web --plan basic --payment-mode hourly --config @examples/http-git-project.json
|
|
190
|
+
zenifra project source --project <project-id> --json
|
|
191
|
+
zenifra project source branches --project <project-id>
|
|
192
|
+
zenifra project source deploy-settings set --project <project-id> --mode branch
|
|
193
|
+
zenifra deploy --project <project-id> --branch main
|
|
194
|
+
zenifra deploy watch --project <project-id> --build <build-id>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
O deploy manual retorna um ID de build para acompanhar com `zenifra deploy watch`. Para ativar deploy por tag ou release, use `zenifra project source deploy-settings set --project <project-id> --mode tag --tag-pattern "v*"` ou o modo `release`; prereleases podem ser habilitadas somente no modo `release`. O comando preserva a origem e as configuracoes de build e confirma a alteracao com uma leitura posterior. A API nao oferece precondicao de revisao para essa atualizacao; evite alterar a origem ao mesmo tempo pelo Console ou por outro cliente. Projetos com configuracao GitHub legada continuam usando `zenifra project github` e `zenifra project github deploy-settings set`.
|
|
198
|
+
|
|
199
|
+
Em APIs antigas que ainda nao anunciam as rotas Git neutras, a CLI usa as rotas anteriores somente quando consegue confirmar a origem GitHub legada do projeto. Essa verificacao pode exigir permissao de leitura do projeto. Se a API negar essa leitura, a CLI encerra o comando sem tentar a rota antiga; projetos Forgejo ou com outra origem generica nunca sao tratados como GitHub.
|
|
200
|
+
|
|
160
201
|
Alguns builds antigos podem disponibilizar somente um resumo terminal. Nesse caso, a saida legivel avisa que eventos detalhados nao estavam disponiveis; `--json` preserva a resposta recebida da API.
|
|
161
202
|
|
|
162
203
|
### Modos de deploy GitHub
|
|
@@ -239,7 +280,7 @@ zenifra plans --type database
|
|
|
239
280
|
zenifra plans --type storage --json
|
|
240
281
|
```
|
|
241
282
|
|
|
242
|
-
`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.
|
|
283
|
+
`zenifra plans` funciona sem autenticacao e mostra os catalogos publicos de HTTP, banco, armazenamento, Jobs agendados e Valkey. Use `--type job` para consultar Jobs agendados ou `--type valkey` para consultar Key Value, Cache e Queue.
|
|
243
284
|
|
|
244
285
|
Para planos HTTP, a saida legivel tambem mostra as capacidades disponiveis, como logs, metricas, verificacao de saude, auto-scaling, subdominio personalizado e acesso de rede. Use `--json` quando precisar consumir o catalogo sem formatacao.
|
|
245
286
|
|
|
@@ -309,6 +350,7 @@ Use os arquivos em `examples/` como base para `zenifra create project`:
|
|
|
309
350
|
- `examples/http-github-project.json`: projeto HTTP com build via GitHub
|
|
310
351
|
- `examples/http-github-tag-project.json`: projeto HTTP com deploy por tag e padrao exato
|
|
311
352
|
- `examples/http-github-release-project.json`: projeto HTTP com deploy por release e padrao `v*`
|
|
353
|
+
- `examples/http-git-project.json`: projeto HTTP com origem Git por conexao configurada no Console/API
|
|
312
354
|
- `examples/http-autoscaling-project.json`: projeto HTTP pago criado com auto-scaling
|
|
313
355
|
- `examples/postgresql-project.json`: projeto PostgreSQL
|
|
314
356
|
- `examples/mariadb-project.json`: projeto MariaDB
|
|
@@ -316,6 +358,7 @@ Use os arquivos em `examples/` como base para `zenifra create project`:
|
|
|
316
358
|
- `examples/valkey-key-value-project.json`: projeto Valkey Key Value com armazenamento persistente
|
|
317
359
|
- `examples/valkey-cache-project.json`: projeto Valkey Cache sem armazenamento persistente
|
|
318
360
|
- `examples/valkey-queue-project.json`: projeto Valkey Queue com armazenamento persistente
|
|
361
|
+
- `examples/job-project.json`: Job agendado com cron UTC, imagem e armazenamento efêmero
|
|
319
362
|
|
|
320
363
|
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:
|
|
321
364
|
|
|
@@ -329,17 +372,18 @@ O wizard atual cobre:
|
|
|
329
372
|
- projetos `postgresql`
|
|
330
373
|
- projetos `mariadb`
|
|
331
374
|
- projetos `valkey` nos perfis `key_value`, `cache` e `queue`
|
|
375
|
+
- Jobs agendados com uma imagem OCI pronta
|
|
332
376
|
|
|
333
377
|
Projetos `clickhouse` usam atualmente o fluxo nao interativo com `--config`, como em `examples/clickhouse-project.json`.
|
|
334
378
|
|
|
335
|
-
`zenifra create project` nao assume valores default para `--plan` e `--payment-mode
|
|
379
|
+
`zenifra create project` nao assume valores default para `--plan` e `--payment-mode`, exceto para Jobs, que usam `per_minute` automaticamente.
|
|
336
380
|
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.
|
|
337
381
|
Antes de escolher um plano com o usuario, compare os catalogos com `zenifra plans` para evitar suposicoes sobre custo.
|
|
338
382
|
|
|
339
383
|
Valores aceitos:
|
|
340
384
|
|
|
341
|
-
- `payment_mode`: `hourly`, `monthly`, `yearly`
|
|
342
|
-
- `type_project` no `config`: `http`, `postgresql`, `mariadb`, `valkey`, `clickhouse`
|
|
385
|
+
- `payment_mode`: `hourly`, `monthly`, `yearly`, `per_minute` (somente Jobs)
|
|
386
|
+
- `type_project` no `config`: `http`, `postgresql`, `mariadb`, `valkey`, `clickhouse`, `job`
|
|
343
387
|
- `exposure` no `config` HTTP: `public`, `private`
|
|
344
388
|
- `plan`: consulte `zenifra plans` para os planos atuais; ClickHouse usa `analytics-*`; Valkey usa `db-*` para Key Value, `cache-*` para Cache e `queue-*` para Queue
|
|
345
389
|
- `config.profile` em projetos Valkey: `key_value`, `cache` ou `queue`
|
|
@@ -348,7 +392,9 @@ Valores aceitos:
|
|
|
348
392
|
- `config.github.runtime` (quando houver GitHub em projeto HTTP): `nodejs` ou `python`
|
|
349
393
|
- `config.github.auto_deploy`: use `true` para o modo `branch`; mantenha `false` ao habilitar `version_deploy`
|
|
350
394
|
- `config.github.version_deploy`: use `enabled: true`, `event: "tag"` ou `"release"` e um `tag_pattern` explicito; `include_prereleases` e opcional e padrao `false`
|
|
395
|
+
- `config.source` e `config.build` (quando houver origem Git por conexao): use os IDs retornados pela configuracao segura no Console/API; nao informe credenciais Git nesses campos
|
|
351
396
|
- `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
|
|
397
|
+
- `config.job` (somente Jobs): cron com cinco campos em UTC; o wizard usa a imagem OCI pronta e nao pergunta comando, argumentos, URL, exposicao, porta ou instancias
|
|
352
398
|
|
|
353
399
|
Observacoes do wizard:
|
|
354
400
|
|
|
@@ -359,7 +405,8 @@ Observacoes do wizard:
|
|
|
359
405
|
- em projetos de banco, o wizard nao pergunta `username`, `password` nem `database name`
|
|
360
406
|
- em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API
|
|
361
407
|
- 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
|
|
362
|
-
- a
|
|
408
|
+
- em Jobs, a imagem OCI pronta é obrigatória, o cron usa cinco campos em UTC, a cobrança é por minuto inteiro e a CLI não pergunta origem GitHub, tipo de pagamento, comando, argumentos, exposição HTTP, porta ou instâncias
|
|
409
|
+
- 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, podendo ser salva em arquivo privado com `--connection-file <path>`
|
|
363
410
|
- `valkey credentials rotate` retorna uma operação assíncrona; use `--wait` ou `valkey credentials status` para acompanhar
|
|
364
411
|
|
|
365
412
|
Exemplo de entrega segura para automação local:
|
|
@@ -370,6 +417,20 @@ zenifra valkey credentials rotate --project <project-id> --wait --connection-fil
|
|
|
370
417
|
|
|
371
418
|
O arquivo é criado com permissão privada; a conexão não aparece na saída do comando quando essa opção é usada.
|
|
372
419
|
|
|
420
|
+
## Execuções de Jobs agendados
|
|
421
|
+
|
|
422
|
+
Consulte o histórico de execuções e os logs de uma execução específica:
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
zenifra project runs --project <project-id>
|
|
426
|
+
zenifra project runs cancel --project <project-id> --run <run-id>
|
|
427
|
+
zenifra project runs logs --project <project-id> --run <run-id>
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
`project runs cancel` cancela somente a execução selecionada. O cron do projeto continua agendando novas execuções; use `zenifra project stop --project <project-id>` para pausar o projeto e interromper execuções futuras.
|
|
431
|
+
|
|
432
|
+
O cancelamento aguarda até 30 segundos pela finalização segura e pode forçar o encerramento depois desse período. Se uma execução antiga não puder ser cancelada com segurança, o comando informa o problema e você deve aguardar que ela termine ou alcance o limite de tempo.
|
|
433
|
+
|
|
373
434
|
## Regressao manual de auto-scaling em staging
|
|
374
435
|
|
|
375
436
|
O teste de staging cria projetos, gera trafego, consulta consumo e remove somente os projetos criados pela propria execucao. Ele exige uma API de teste explicita, rejeita a API de producao e exige habilitacao explicita das mutacoes. O exemplo abaixo usa uma API local de teste.
|