Adicionar uma nova brand / fork
Hoje o stack consolida todas as marcas em um único template multi-país
(front-web-base), servindo cada brand por environment (Worker + domínio).
Para a maioria dos casos novos, você não cria um fork — apenas adiciona um
novo environment na brand web-base.
Crie uma brand separada (e eventualmente um repo fork) somente quando o cliente precisar divergir de forma estrutural do template (código próprio, páginas exclusivas, etc.), a ponto de justificar um repositório independente.
:::tip Na dúvida
Se é só "mais um país/marca servido pelo mesmo template" → use um
environment em web-base. Se é "um repo com código próprio
do cliente" → siga este guia.
:::
Convenção: uma brand = um repo
Cada brand vive em front-ops/config/brands/<brand>/ e o campo repo: no
brand.yml declara qual repositório git pertence a ela. Dois brand.yml não
podem declarar o mesmo repo: (o reusable workflow falha com erro de conflito).
Regras do nome da pasta <brand>:
kebab-case, só letras minúsculas, números e-- exemplos:
web-base,vera-bet-br,cassino-bet-br
Passo a passo
1 — Criar o repositório fork
Clone/forke o front-web-base como front-web-<marca> na org cactus-agents.
O fork já vem com os workflows (ci-deploy.yml, list-environments.yml, etc).
2 — Criar a brand no front-ops
# front-ops/config/brands/<marca>/brand.yml
brand: <marca>
repo: cactus-agents/front-web-<marca>
defaults:
cf_account: CT
default_branch: main
language: pt-br
auto_deploy: false
:::info Placeholder
Uma brand sem repo: é tratada como placeholder (fork ainda não criado) e é
ignorada pelo reusable workflow. Você pode commitar o brand.yml sem repo: e
preencher depois.
:::
3 — Criar o primeiro environment
# front-ops/config/brands/<marca>/environments/<env>/deploy.yml
worker_name: front-web-<marca>
cf_account: CT
auto_deploy: false
default_branch: main
language: pt-br
origin_domain: <marca>.com
worker_url: <marca>.com
cf_zone: <marca>.com
Detalhes de cada campo e variantes (stage/subdomínio/auto-deploy) em Adicionar environment.
4 — Ajustar o dropdown do fork
No fork, o ci-deploy.yml precisa ter o(s) environment(s) da brand no dropdown
de workflow_dispatch (o config-lint valida sync com o front-ops). Como o
fork tem seu próprio scan (config/brands/<marca>/environments), ajuste o
brand-dir referenciado nos jobs config-lint / resolve-matrix /
list-environments se necessário (no web-base é web-base; no fork deve
apontar para <marca>).
5 — Acesso das org secrets (GitHub)
As org secrets têm acesso restrito a repos selecionados. Edite cada secret e adicione o novo repo em Repository access:
GH_PACKAGES_TOKEN— para o CI (instalar@cactus-agents/*)FRONT_GH_ACTIONS_TOKEN— para o deploy (checkout do front-ops + install)FRONT_{XX}_CF_ACCOUNT_ID/FRONT_{XX}_CF_API_TOKEN— conta CF da brand- (se aplicável)
FRONT_{XX}_CACHE_PURGE_SECRET,FRONT_{XX}_CF_WORKER_KEY,FRONT_{XX}_R2_ASSETS_ACCESS_KEY,FRONT_{XX}_R2_ASSETS_SECRET
6 — Zona no token CF
Se a brand usa um domínio novo, edite o FRONT_{XX}_CF_API_TOKEN no
Cloudflare Dashboard e inclua a nova zona em Zone Resources. Ver
Adicionar conta CF.
7 — Subir o Worker e configurar vars/secrets
Siga a Parte 3 do guia de environment:
primeiro deploy, API_BASE_URL/CF_WORKER_KEY nos bindings, DNS/route.
8 — Validar
Dispare o deploy manual (Actions → CI/CD → Run workflow → selecione o env) e confira o Summary. Ver validação.
Manutenção do fork
# Atualizar a lógica de plataforma (pacotes do core) — sem merge conflicts
pnpm update @cactus-agents/*
Para propagar mudanças de UI/estrutura do front-web-base, um PR script pode ser
usado; a superfície de conflito depende de quanto o fork divergiu do base. Ver
Fork de Marca → Guia.