Pular para o conteúdo principal

Referência de secrets e variáveis

Catálogo das org secrets do GitHub usadas no deploy, das variáveis/secrets do Worker na Cloudflare, e de onde cada coisa é consumida.

cuidado

Esta página lista nomes, nunca valores. Se você precisa do valor de uma secret, pegue no cofre/dashboard — não em documentação.

Org secrets (GitHub — org cactus-agents)

Ao criar um novo fork/repo, adicione-o ao Repository access de cada secret relevante.

GitHub

SecretEscopo do PATConsumido porUso
GH_PACKAGES_TOKENread:packagesjob quality do caller; lighthouse-base.ymlInstalar @cactus-agents/* no CI
FRONT_GH_ACTIONS_TOKENrepo, read:packages, read:orgreusable de deploy; bump-cache-generation.yml; sync-purge-options.yml; purge-all.yml; purge-monitor.yml; lighthouse-base.yml; ci-release.yml do coreCheckout do front-ops (privado), install de pacotes, resolução do HEAD SHA via API, authorization gate de team, e os pushes que precisam bypassar branch protection

:::info read:org O FRONT_GH_ACTIONS_TOKEN precisa de read:org para o gate de deploy_protection.required_team conseguir consultar a membership do ator no team (GET /orgs/cactus-agents/teams/<team>/memberships/<actor>). :::

Cloudflare (por conta — prefixo {XX} = CT / BT / TS)

SecretObrigatórioConsumido por (step / workflow)Uso
FRONT_{XX}_CF_ACCOUNT_IDResolve CF credentials; deploy-docs; deploy-affiliates; manual-cache-purge; purge-allAccount ID da conta CF
FRONT_{XX}_CF_API_TOKENidem acima + deploy e purgesToken de API — permissions em Adicionar conta CF
FRONT_{XX}_CF_WORKER_KEYrecomendadoResolve API_BASE_URL and CF_WORKER_KEY, Resolve cache purge secrets; cache-status; manual-cache-purge; purge-all; purge-monitor (fallback)CF_WORKER_KEY injetado no build + header cf-worker-key (WAF bypass) nos purges
FRONT_{XX}_CACHE_PURGE_SECRETrecomendadoResolve cache purge secrets; cache-status; manual-cache-purge; purge-allHeader X-Cache-Secret no purge de platform cache. Sem ele o purge de platform cache é pulado (warning)
FRONT_{XX}_CF_WORKER_KEY_PROXYcondicionalpurge-monitor.ymlHeader cf-worker-key-proxy nas chamadas diretas ao BFF. Cai em FRONT_{XX}_CF_WORKER_KEY como fallback; o workflow erra se nenhum dos dois existir
FRONT_{XX}_R2_ASSETS_ACCESS_KEYopcionalResolve R2 S3 API credentialsAccess key da R2 S3 API para sync de assets
FRONT_{XX}_R2_ASSETS_SECRETopcionalResolve R2 S3 API credentialsSecret da R2 S3 API. Sem o par, o sync de assets para R2 é pulado (warning)

Outras

SecretObrigatórioConsumido porUso
AWS_WARMUP_ROLE_ARNsó quando run_warm_cutover: truedeploy.yml, step Configure AWS credentials (warm collector)Role assumida via OIDC em eu-central-1. Precisa de ssm:SendCommand e ssm:ListCommandInvocations nas instâncias com a tag front-web-warmup=<tenant>. Único credential não-Cloudflare e não-GitHub do caminho de deploy
LHCI_GITHUB_APP_TOKENopcionallighthouse-base.ymlToken do Lighthouse CI GitHub App

:::caution Secrets pouco visíveis FRONT_{XX}_CF_WORKER_KEY, FRONT_{XX}_CACHE_PURGE_SECRET e FRONT_{XX}_R2_ASSETS_* não causam falha fatal quando ausentes — o pipeline emite apenas ::warning:: e pula a etapa correspondente. Resultado: deploys "verdes" mas com cache potencialmente stale ou sem fallback de chunks. :::

Para adicionar uma conta CF nova (e as linhas de env correspondentes nos workflows), ver Adicionar conta CF.

Variáveis e secrets do Worker (Cloudflare)

Lidas pelo pipeline dos bindings do Worker

VariávelTipoUso
API_BASE_URLPlainA única var que o pipeline lê dos bindings (GET /accounts/{id}/workers/scripts/{name}/bindings) e injeta no build. Sem ela: ::warning::API_BASE_URL not found in Cloudflare bindings e o build sai sem a URL

:::danger CF_WORKER_KEY NÃO é lido do binding Apesar do nome do step ser Resolve API_BASE_URL and CF_WORKER_KEY, ele extrai dos bindings apenas API_BASE_URL. CF_WORKER_KEY vem exclusivamente da org secret FRONT_{XX}_CF_WORKER_KEY, por indireção (WORKER_VAR="SECRET_${CF_ACCOUNT}_WORKER_KEY"). Não há fallback para o binding.

Consequência operacional: se você configurar CF_WORKER_KEY só como secret do Worker e não como org secret, o build sai com a chave vazia e sem erro nenhum.

A chave também precisa existir como secret do Worker — mas por outro motivo: o uso em runtime (Worker → BFF). São duas configurações independentes. :::

Injetadas no build (não são vars do Worker)

Estas vão para o .env e/ou para o env: do step Build. Elas são compiladas no bundle — não aparecem como binding no Worker.

VariávelOndeOrigem
BRAND_LANGUAGE.env + Builddeploy.yml::language
ORIGIN_DOMAIN.env + Builddeploy.yml::origin_domain
API_BASE_URL.env + Buildbinding do Worker
CF_WORKER_KEY.env + Buildorg secret FRONT_{XX}_CF_WORKER_KEY
GITHUB_SHABuilddeploy_ref (HEAD do default_branch)

Injetadas no wrangler.toml como [vars] (NÃO configurar à mão)

O step Patch wrangler.toml with runtime vars anexa um bloco [vars] único com 16 chaves, e depois o binding [[kv_namespaces]].

Variável / bindingOrigemDefault emitido
BUILD_IDprimeiros 12 chars do deploy_ref— (falha se não resolver)
BUILD_TSdate +%s no momento do patch
WORKER_NAMEdeploy.yml::worker_name
CACHE_GENERATIONconfig/cache/generation.yml::current + -<BUILD_ID>só emitido se não-vazio
CACHE_WARMER_ENABLEDdeploy.yml::cache_warmer.enabledfalse
CACHE_WARMER_PATHSdeploy.yml::cache_warmer.pathssó se não-vazio
CACHE_WARMER_ORIGINdeploy.yml::cache_warmer.originsó se não-vazio
SHARED_PUBLIC_DOC_FOR_AUTHdeploy.yml::shared_public_doc_for_authfalse
SSR_SWR_ENABLEDdeploy.yml::ssr_swr_enabledfalse
SSR_CACHE_HTML_TTLdeploy.yml::ssr_cache.html_ttl60
SSR_CACHE_DATA_TTLdeploy.yml::ssr_cache.data_ttl60
SSR_CACHE_KV_TTLdeploy.yml::ssr_cache.kv_ttl180
SSR_CACHE_DATA_BROWSER_TTLdeploy.yml::ssr_cache.data_browser_ttl0
PUBLIC_DOMAINdeploy.yml::public_domainsempre emitido (pode ser vazio)
PLATFORM_CACHE_POLICY_JSONmerge de config/cache/*só se a policy resolveu
CACHE_NAMESPACE= worker_namejunto com a policy
PLATFORM_CACHE_KV (binding)KV provisionado no deploysó se algum recurso usa snapshot KV
ASSETS, ASSETS_ARCHIVE, API_SERVICE (bindings)wrangler.toml do base

:::info Por que o pipeline emite false / 0 em vez de omitir a chave O deploy roda wrangler deploy --keep-vars. Com --keep-vars, uma chave que o pipeline não escreve mantém o valor antigo pinado no Worker — uma flag desligada no front-ops continuaria ligada em produção. Por isso os booleanos e TTLs são sempre emitidos com default explícito. Só as chaves puramente aditivas (CACHE_WARMER_PATHS, CACHE_WARMER_ORIGIN, CACHE_GENERATION, PLATFORM_CACHE_POLICY_JSON) são condicionais. :::

:::info BUILD_TS é load-bearing BUILD_TS alimenta o build-currency gate do worker — o mecanismo que permite a uma versão órfã detectar que está stale e desligar o próprio cache SSR (X-Cache: BYPASS-STALE-BUILD). Foi o que fechou o postmortem stage-7k de 2026-07-14, e é por isso que os deploys do mesmo worker são serializados por concurrency (dois runs fora de ordem invertem o BUILD_TS). :::

Quando deploy_entry_worker: true, o worker <worker_name>-entry recebe um subconjunto em lockstep: BUILD_ID, BUILD_TS, CACHE_NAMESPACE, CACHE_GENERATION e os quatro SSR_CACHE_*_TTL. Sem KV e sem policy.

Configuradas por brand (runtime — você define no Worker)

VariávelTipoQuando
BRAND_COUNTRYPlainsempre (BRA, CHL, MEX, PER, NGA, …)
BRAND_CURRENCYPlainsempre (BRL, CLP, MXN, PEN, NGN, …)
BRAND_TIMEZONEPlainrecomendado (server-only)
BRAND_CACHE_TTLPlainopcional
CASSINO_MODEPlainopcional (legacy/api_new)
FORCE_SPORTBOOKPlainopcional (first/altenar/betby/rogue)
STICKER_API_URLPlainse usa sticker-album
TURNSTILE_SITE_KEY / RECAPTCHA_SITE_KEYPlainse usa captcha
API_BASE_URLPlainsempre — lida pelo pipeline
CF_WORKER_KEYSecretruntime Worker → BFF (o pipeline pega da org secret, não daqui)
SMARTICO_SALT_KEYSecretse usa gamification Smartico
SPORTS_ROGUE_API_KEYSecretse FORCE_SPORTBOOK=rogue
CACHE_PURGE_SECRETSecretendpoint de purge via webhook (runtime)
CACHE_GENERATION_SECRETSecretescrito pelo cutover run_warm_cutover para flipar a generation sem rebuild

:::info Referência canônica das vars do app A lista detalhada de variáveis do template, com a interface ClientEnv e prioridades de resolução, está em Template → Environment Variables. :::

Mapa rápido: "o que configurar onde"

GitHub org secrets → credenciais de plataforma (CF account/token,
(Settings → Actions) GH tokens, purge/worker-key/R2 por conta,
AWS_WARMUP_ROLE_ARN)

front-ops/.../deploy.yml → identidade do deploy + flags de rollout
(config-as-code) (worker_name, domínios, branch, conta CF,
cf_zone, proteção, ssr_cache, cache_warmer,
entry worker, cutover)

front-ops/config/cache/ → política de cache, generation token,
rotas do monitor, política do service-api

Worker (CF dashboard) → config da brand em runtime (API_BASE_URL,
Variables and Secrets BRAND_*, secrets Smartico/Rogue, CF_WORKER_KEY)