@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 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 GitHub
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 do pipeline GitHub de um build especifico.
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 GitHub
157
- - `zenifra deploy`: dispara o build/deploy GitHub e retorna o `build_id`
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 conexão mascarada pode ser consultada a qualquer momento; uma rotação concluída pode salvar a conexão utilizável em arquivo privado com `--connection-file <path>`
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.