Skip to main content

Backstage Templates — Golden Paths

Template Dependency Chain

People layer (run any time)
──────────────────────────────────────────────────────────────────
create-group → Group entity + RBAC + ArgoCD role instructions
create-user → User entity + RBAC + ArgoCD user instructions

Platform layer (run in order)
──────────────────────────────────────────────────────────────────
create-domain
│ Domain entity, {domain}-gitops repo created, AppProject

create-system
│ System entity, ApplicationSet (empty elements list)

├──────────────────────────────┬──────────────────────────────┐
▼ ▼ ▼
create-service create-resource create-secret
Component entity, Resource entity, SealedSecret manifest/env
App Repo (CI/CD, docs), Crossplane Claim/env,
k8s manifests/env, infra namespace
service → AppSet

Template Output Summary

TemplateNew repo?PR 1PR 2
create-domain{domain}-gitopsdomain repo (entity, defaults, CI)platform-gitops (AppProject)
create-systemdomain-gitops (System entity + TechDocs)platform-gitops (ApplicationSet)
create-service{app}-repodomain-gitops (manifests + Component)new app-repo (CI/CD + TechDocs + .k8s folder), platform-gitops (AppSet element)
create-resourcedomain-gitops (Claims + infra namespace)catalog repo (Resource entity)
create-secretdomain-gitops (SealedSecret)(none)
create-groupcatalog repo (Group entity)platform-gitops (RBAC)
create-usercatalog repo (User entity)platform-gitops (RBAC)

Required Scaffolder Packages

yarn workspace backend add \
@backstage/plugin-scaffolder-backend-module-github \
@roadiehq/scaffolder-backend-module-utils
ActionPackageUsed by
fetch:templatebuilt-inall
catalog:fetchbuilt-increate-system, service, resource, user, group
catalog:registerbuilt-inall
publish:github@backstage/plugin-scaffolder-backend-module-githubcreate-domain only
publish:github:pull-request@backstage/plugin-scaffolder-backend-module-githuball
roadiehq:utils:jsonata@roadiehq/scaffolder-backend-module-utilscreate-system, service, resource, user, group