@zenifra/cli 0.1.0 → 0.2.2
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 +101 -11
- package/bin/zenifra.mjs +1815 -114
- package/examples/http-github-project.json +35 -0
- package/examples/http-project.json +4 -5
- package/examples/mariadb-project.json +19 -0
- package/examples/postgresql-project.json +19 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -36,13 +36,27 @@ zenifra help project env add
|
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
zenifra auth login
|
|
39
|
-
zenifra auth login --code 123456
|
|
39
|
+
zenifra auth login --profile staging --code 123456
|
|
40
40
|
zenifra auth api-key --key znf_sua_chave
|
|
41
|
+
zenifra auth api-key --profile prod --key znf_sua_chave
|
|
41
42
|
zenifra auth logout
|
|
43
|
+
zenifra profile list
|
|
44
|
+
zenifra profile show
|
|
45
|
+
zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode api-key --key znf_sua_chave
|
|
46
|
+
zenifra profile use staging
|
|
47
|
+
zenifra profile edit staging --description "Homologacao interna"
|
|
48
|
+
zenifra profile remove staging
|
|
42
49
|
zenifra orgs
|
|
43
50
|
zenifra org set
|
|
44
|
-
zenifra
|
|
45
|
-
zenifra
|
|
51
|
+
zenifra plans
|
|
52
|
+
zenifra plans --type http
|
|
53
|
+
zenifra plans --type storage --json
|
|
54
|
+
zenifra create project
|
|
55
|
+
zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
|
|
56
|
+
zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
|
|
57
|
+
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
|
|
58
|
+
zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
|
|
59
|
+
zenifra projects --type http --page 1 --limit 15
|
|
46
60
|
zenifra project info --project <project-id>
|
|
47
61
|
zenifra project url --project <project-id>
|
|
48
62
|
zenifra project logs --project <project-id> --instance <instance-id>
|
|
@@ -66,37 +80,113 @@ zenifra deploy watch --project <project-id> --build <build-id>
|
|
|
66
80
|
- API padrao: `https://api.zenifra.com/v1`
|
|
67
81
|
- Override de API: `ZENIFRA_API_URL=https://api-stg.zenifra.com/v1`
|
|
68
82
|
- API key global: `ZENIFRA_API_KEY=znf_sua_chave`
|
|
69
|
-
-
|
|
70
|
-
- Override
|
|
83
|
+
- Store local de perfis: `~/.config/zenifra-cli/profiles.json`
|
|
84
|
+
- Override do diretorio local: `ZENIFRA_CONFIG_DIR=/path/custom`
|
|
71
85
|
|
|
72
|
-
Todos os comandos de listagem aceitam `--json`.
|
|
86
|
+
Todos os comandos de listagem aceitam `--json`. `zenifra projects` e paginado por padrao com 15 itens por pagina; use `--page <n>` e `--limit <n>` para navegar.
|
|
87
|
+
|
|
88
|
+
Para comparar custo antes de criar um projeto, use:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
zenifra plans
|
|
92
|
+
zenifra plans --type http
|
|
93
|
+
zenifra plans --type database
|
|
94
|
+
zenifra plans --type storage --json
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
`zenifra plans` funciona sem autenticacao e mostra os catalogos publicos de HTTP, banco e armazenamento.
|
|
73
98
|
|
|
74
99
|
Valores de variaveis de ambiente sao mascarados por padrao, inclusive em `--json`.
|
|
75
100
|
Use `--show-values` apenas quando precisar inspecionar os valores completos.
|
|
76
101
|
|
|
102
|
+
## Perfis
|
|
103
|
+
|
|
104
|
+
A CLI agora trabalha com um perfil ativo. Cada perfil pode ter:
|
|
105
|
+
|
|
106
|
+
- `name`: identificador tecnico usado nos comandos
|
|
107
|
+
- `description`: descricao livre
|
|
108
|
+
- `apiBaseUrl`: API da Zenifra para aquele ambiente
|
|
109
|
+
- credencial:
|
|
110
|
+
- `api_key` para automacao organizacional
|
|
111
|
+
- `access_token` para login pessoal, com `selectedOrganizationId`
|
|
112
|
+
|
|
113
|
+
Exemplos:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
zenifra profile add --name prod --description Producao --api-base https://api.zenifra.com/v1 --mode api-key --key znf_sua_chave
|
|
117
|
+
zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode login
|
|
118
|
+
zenifra profile list
|
|
119
|
+
zenifra profile show staging
|
|
120
|
+
zenifra profile use prod
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Regras de precedencia:
|
|
124
|
+
|
|
125
|
+
- `ZENIFRA_API_KEY` sobrescreve a credencial do perfil ativo apenas para a execucao atual
|
|
126
|
+
- `ZENIFRA_API_URL` sobrescreve a API base do perfil ativo apenas para a execucao atual
|
|
127
|
+
- `auth login` e `auth api-key` operam no perfil ativo por padrao
|
|
128
|
+
- `auth login --profile <name>` e `auth api-key --profile <name>` atualizam ou criam outro perfil e o tornam ativo
|
|
129
|
+
|
|
130
|
+
Migracao:
|
|
131
|
+
|
|
132
|
+
- se existir `session.json` legado e ainda nao existir `profiles.json`, a CLI migra automaticamente a sessao antiga para um perfil `default`
|
|
133
|
+
|
|
77
134
|
## Automacao com API key
|
|
78
135
|
|
|
79
136
|
Crie uma API key global no painel da organizacao e use-a em jobs, pipelines e scripts:
|
|
80
137
|
|
|
81
138
|
```bash
|
|
82
139
|
export ZENIFRA_API_KEY=znf_sua_chave
|
|
83
|
-
zenifra projects --type http
|
|
140
|
+
zenifra projects --type http --page 1 --limit 15
|
|
84
141
|
zenifra deploy --project <project-id> --branch main
|
|
85
142
|
```
|
|
86
143
|
|
|
87
|
-
Tambem e possivel salvar a chave localmente:
|
|
144
|
+
Tambem e possivel salvar a chave localmente no perfil ativo:
|
|
88
145
|
|
|
89
146
|
```bash
|
|
90
147
|
zenifra auth api-key --key znf_sua_chave
|
|
91
148
|
```
|
|
92
149
|
|
|
93
|
-
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
|
|
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.
|
|
94
151
|
|
|
95
152
|
Para reduzir impacto de vazamento, configure IPs permitidos na criacao da API key sempre que a automacao tiver origem fixa.
|
|
96
153
|
|
|
97
|
-
##
|
|
154
|
+
## Exemplos de projetos
|
|
155
|
+
|
|
156
|
+
Use os arquivos em `examples/` como base para `zenifra create project`:
|
|
157
|
+
|
|
158
|
+
- `examples/http-project.json`: projeto HTTP com imagem OCI publica
|
|
159
|
+
- `examples/http-github-project.json`: projeto HTTP com build via GitHub
|
|
160
|
+
- `examples/postgresql-project.json`: projeto PostgreSQL
|
|
161
|
+
- `examples/mariadb-project.json`: projeto MariaDB
|
|
162
|
+
|
|
163
|
+
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:
|
|
164
|
+
|
|
165
|
+
- se o campo e obrigatorio ou opcional
|
|
166
|
+
- exemplos de valores aceitos
|
|
167
|
+
- link da documentacao relacionada
|
|
168
|
+
|
|
169
|
+
O wizard atual cobre:
|
|
170
|
+
|
|
171
|
+
- projetos `http` com origem `github` ou `oci`
|
|
172
|
+
- projetos `postgresql`
|
|
173
|
+
- projetos `mariadb`
|
|
174
|
+
|
|
175
|
+
`zenifra create project` nao assume valores default para `--plan` e `--payment-mode`.
|
|
176
|
+
Antes de escolher um plano com o usuario, compare os catalogos com `zenifra plans` para evitar suposicoes sobre custo.
|
|
177
|
+
|
|
178
|
+
Valores aceitos:
|
|
179
|
+
|
|
180
|
+
- `payment_mode`: `hourly`, `monthly`, `yearly`
|
|
181
|
+
- `type_project` no `config`: `http`, `postgresql`, `mariadb`
|
|
182
|
+
- `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
|
+
- `config.github.runtime` (quando houver GitHub em projeto HTTP): `nodejs` ou `python`
|
|
184
|
+
|
|
185
|
+
Observacoes do wizard:
|
|
98
186
|
|
|
99
|
-
|
|
187
|
+
- conflitos entre documentacao e API sao validados pelo contrato real aceito pela API
|
|
188
|
+
- em projetos de banco, o wizard nao pergunta `username`, `password` nem `database name`
|
|
189
|
+
- em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API
|
|
100
190
|
|
|
101
191
|
## Publicacao no npm
|
|
102
192
|
|