@zenifra/cli 0.3.4 → 0.5.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,15 @@ 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>
57
62
  zenifra create project
58
63
  zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
59
64
  zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
65
+ zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-git-project.json
60
66
  zenifra create project --name <name> --plan premium --payment-mode hourly --config @examples/http-autoscaling-project.json
61
67
  zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
62
68
  zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
@@ -80,6 +86,13 @@ zenifra project metrics --project <project-id> --instance <instance-id>
80
86
  zenifra project metrics capabilities --project <project-id>
81
87
  zenifra project network --project <project-id> --view summary
82
88
  zenifra project image set --project <project-id> --image ghcr.io/zenifra/app:tag
89
+ zenifra project github --project <project-id>
90
+ zenifra project github deploy-settings set --project <project-id> --mode branch
91
+ zenifra project source --project <project-id>
92
+ zenifra project source branches --project <project-id>
93
+ zenifra project source deploy-settings set --project <project-id> --mode branch
94
+ zenifra project github deploy-settings set --project <project-id> --mode tag --tag-pattern "v*"
95
+ zenifra project github deploy-settings set --project <project-id> --mode release --tag-pattern "v*" --include-prereleases true
83
96
  zenifra project envs --project <project-id>
84
97
  zenifra project env add --project <project-id> --name NODE_ENV --value production
85
98
  zenifra project env update --project <project-id> --name NODE_ENV --value staging
@@ -134,9 +147,9 @@ zenifra project metrics capabilities --project <project-id> --json
134
147
 
135
148
  ---
136
149
 
137
- ## Builds GitHub
150
+ ## Builds e deployments Git
138
151
 
139
- Use `zenifra builds` para listar o historico de builds e `zenifra builds logs` para ler os logs do pipeline GitHub de um build especifico.
152
+ 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.
140
153
 
141
154
  ```bash
142
155
  zenifra builds --project <project-id>
@@ -149,12 +162,55 @@ zenifra deploy watch --project <project-id> --build <build-id>
149
162
  Fluxos:
150
163
 
151
164
  - `zenifra project logs`: logs da aplicacao em execucao
152
- - `zenifra builds logs`: logs do build GitHub
153
- - `zenifra deploy`: dispara o build/deploy GitHub e retorna o `build_id`
165
+ - `zenifra builds logs`: logs do build Git
166
+ - `zenifra deploy`: dispara o build/deploy Git e retorna o `build_id`
154
167
  - `zenifra deploy watch`: usa esse `build_id` para acompanhar o build em tempo real e imprimir os logs incrementais ate o fim
155
168
 
169
+ 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.
170
+
171
+ 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:
172
+
173
+ ```bash
174
+ zenifra git providers --json
175
+ zenifra git runtimes
176
+ zenifra git connections --json
177
+ zenifra git repositories resolve --connection <connection-id> --path equipe/aplicacao --json
178
+ zenifra git branches --connection <connection-id> --repository <repository-id>
179
+ ```
180
+
181
+ 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:
182
+
183
+ ```bash
184
+ zenifra create project --name api-web --plan basic --payment-mode hourly --config @examples/http-git-project.json
185
+ zenifra project source --project <project-id> --json
186
+ zenifra project source branches --project <project-id>
187
+ zenifra project source deploy-settings set --project <project-id> --mode branch
188
+ zenifra deploy --project <project-id> --branch main
189
+ zenifra deploy watch --project <project-id> --build <build-id>
190
+ ```
191
+
192
+ 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`.
193
+
194
+ 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.
195
+
156
196
  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.
157
197
 
198
+ ### Modos de deploy GitHub
199
+
200
+ Consulte a configuracao publica atual e escolha exatamente um modo de deploy:
201
+
202
+ ```bash
203
+ zenifra project github --project <project-id>
204
+ zenifra project github deploy-settings set --project <project-id> --mode manual
205
+ zenifra project github deploy-settings set --project <project-id> --mode branch
206
+ zenifra project github deploy-settings set --project <project-id> --mode tag --tag-pattern "v*"
207
+ zenifra project github deploy-settings set --project <project-id> --mode release --tag-pattern "v*" --include-prereleases false
208
+ ```
209
+
210
+ Os modos aceitos sao `manual`, `branch`, `tag` e `release`. `tag` e `release` exigem `--tag-pattern`, que aceita curingas `*` e `?`. O padrao de prereleases e `false`; a opcao so esta disponivel no modo `release`. A CLI le a configuracao salva de volta antes de confirmar uma alteracao. O comando `zenifra deploy --project <project-id> --branch <branch>` continua disponivel para iniciar um deploy manual.
211
+
212
+ Para criar um projeto HTTP com deploy por tag ou release, use `examples/http-github-tag-project.json` (padrao exato `v1.2.3`) ou `examples/http-github-release-project.json` (padrao `v*`).
213
+
158
214
  Antes de uma mutacao, confirme o perfil, a API e a organizacao ativa. Para criacoes, confirme tambem o catalogo, plano, pagamento, exposicao, dominio, origem do deploy, porta, instancias e ambientes. Depois, leia o projeto de volta e acompanhe o build/deployment ate um estado terminal.
159
215
 
160
216
  O dominio principal e um dominio personalizado sao campos diferentes. Nao repita o dominio principal em `config.custom_domains`; depois de adicionar um dominio personalizado, valide DNS/TLS e leia a URL final antes de considerar a operacao concluida.
@@ -287,6 +343,9 @@ Use os arquivos em `examples/` como base para `zenifra create project`:
287
343
 
288
344
  - `examples/http-project.json`: projeto HTTP com imagem OCI publica
289
345
  - `examples/http-github-project.json`: projeto HTTP com build via GitHub
346
+ - `examples/http-github-tag-project.json`: projeto HTTP com deploy por tag e padrao exato
347
+ - `examples/http-github-release-project.json`: projeto HTTP com deploy por release e padrao `v*`
348
+ - `examples/http-git-project.json`: projeto HTTP com origem Git por conexao configurada no Console/API
290
349
  - `examples/http-autoscaling-project.json`: projeto HTTP pago criado com auto-scaling
291
350
  - `examples/postgresql-project.json`: projeto PostgreSQL
292
351
  - `examples/mariadb-project.json`: projeto MariaDB
@@ -324,12 +383,16 @@ Valores aceitos:
324
383
  - `config.version` em projetos Valkey: a versão retornada por `zenifra plans --type valkey`
325
384
  - `config.storage` em projetos Valkey: obrigatório e persistente para Key Value/Queue; omitido para Cache
326
385
  - `config.github.runtime` (quando houver GitHub em projeto HTTP): `nodejs` ou `python`
386
+ - `config.github.auto_deploy`: use `true` para o modo `branch`; mantenha `false` ao habilitar `version_deploy`
387
+ - `config.github.version_deploy`: use `enabled: true`, `event: "tag"` ou `"release"` e um `tag_pattern` explicito; `include_prereleases` e opcional e padrao `false`
388
+ - `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
327
389
  - `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
328
390
 
329
391
  Observacoes do wizard:
330
392
 
331
393
  - conflitos entre documentacao e API sao validados pelo contrato real aceito pela API
332
394
  - o wizard oferece auto-scaling apenas quando o plano selecionado informa essa disponibilidade
395
+ - no modo GitHub, o wizard permite escolher entre `manual`, `branch`, `tag` e `release`; modos por versao exigem um padrao de tags
333
396
  - na criacao com auto-scaling, `config.instances` e o minimo inicial e `config.autoscaling.max_instances` e o maximo
334
397
  - em projetos de banco, o wizard nao pergunta `username`, `password` nem `database name`
335
398
  - em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API