lade-factory
Golden path automation: un solo workflow (scaffold.yml) que clona un
template de lade-templates, lo
inicializa, crea el repo en lade-group, bootstrapea su backend de
Terraform y configura environments + branch protection. Se puede disparar
desde la UI de GitHub Actions o desde lade-admin-panel (sección
Golden Paths).
Requisitos (org lade-group)
Sección titulada «Requisitos (org lade-group)»| Secret/variable | Tipo | Para qué | Estado |
|---|---|---|---|
FACTORY_GH_TOKEN |
Org secret, visibilidad selected → solo lade-factory |
gh repo create en la org + push de .github/workflows/*.yml (el GITHUB_TOKEN por defecto no puede crear repos) |
✅ configurado |
AWS_ROLE_ARN_DEV |
Org variable | OIDC para bootstrapear el bucket S3 de state de cada repo nuevo | ✅ ya existe (shared-aws-bootstrap) |
CLOUDFLARE_ACCOUNT_ID / CLOUDFLARE_ZONE_ID |
Org variables | Pasados a init.sh cuando el template es astro-cloudflare-template |
✅ ya existen |
Crear FACTORY_GH_TOKEN
Sección titulada «Crear FACTORY_GH_TOKEN»- GitHub → Settings → Developer settings → Personal access tokens (classic).
- Scopes:
repo(completo) +admin:org(crear repos enlade-groupy gestionar environments/variables) +workflow(obligatorio: sin este scope,git pushrechaza cualquier archivo.github/workflows/*.yml— y todos los templates traen workflows — con el errorrefusing to allow a Personal Access Token to create or update workflow ... without workflow scope). Los 3 scopes se pueden marcar en el mismo token o agregarse después editándolo (el valor del token no cambia al editar scopes). - Expiración: la que prefieras (recomendado 90 días + rotar).
gh secret set FACTORY_GH_TOKEN --org lade-group --visibility selected --repos lade-factory --body <token>
Es un PAT personal — deuda técnica conocida y aceptada para el MVP. Ver la historia F7.4 en Notion (Lade HQ) para el reemplazo por una GitHub App.
Uso manual (sin el panel)
Sección titulada «Uso manual (sin el panel)»GitHub → Actions → Scaffold → Run workflow. Completá template,
project_name, flavor (solo aplica a astro-cloudflare-template) y
ticket_prefix. Dejá run_key vacío (es para la correlación desde el
panel) y reconfigure_only en false.
Qué hace exactamente
Sección titulada «Qué hace exactamente»scripts/scaffold.sh(jobscaffold, corre conenvironment: devpara tener OIDC de AWS): clona el template, corre suinit.shcon los flags correspondientes (astro-cloudflare-templaterecibe además--cloudflare-account-id/--cloudflare-zone-id), correcreate-app.shsi el template lo soporta de forma no interactiva (soloastro-cloudflare-template—vite-cloudfront-templatetiene uncreate-app.shinteractivo,npm create vite@latest, que no se automatiza a propósito: elegir framework es una decisión humana), crea el repo enlade-groupcongh repo create --private --push, y bootstrapea el backend de Terraform (make tf-bootstrap-apply+gh variable set TF_STATE_BUCKET).scripts/configure-repo.sh(jobconfigure, siempre corre después —también solo sireconfigure_only=true, sin repetir el clone/push): seteaTICKET_PREFIX, crea los 3 GitHub Environments (devsin restricciones;qa/prodcon el actor que disparó el run como reviewer obligatorio y branch policy restringida a tagsv*.*.*), y aplica branch protection básica enmain(1 review, sin force-push). Todo congh api— idempotente, se puede re-correr.- Resumen en
$GITHUB_STEP_SUMMARYcon la URL del repo y los próximos pasos manuales.
Limitaciones conocidas (MVP)
Sección titulada «Limitaciones conocidas (MVP)»- No se automatiza “Require status checks to pass” en branch protection (los nombres de checks solo existen después del primer PR real).
vite-cloudfront-templatenecesitacreate-app.sha mano después del scaffold (es interactivo por diseño).- Auth vía PAT personal, no GitHub App (F7.4 en el backlog).