Full Project Bootstrap
A minimal but complete set that takes a Go service from source to a running Cloud Run deployment with a database — end to end. It stitches together the pieces from the previous pages.
Repository layout
manifests/
├── organization.yaml
├── organization-user-group/retail-developers.yaml
├── github-connection/default/
│ └── default.yaml
│ └── github-repository/payment-api/
│ ├── payment-api.yaml
│ └── build-definition/payment-api.yaml
├── artifact-registry/docker-private.yaml
└── organizational-unit/retail-banking/
├── retail-banking.yaml
├── release-track/main-track/
│ ├── main-track.yaml
│ └── application-set/payments/
│ ├── payments.yaml
│ └── application/payment-api.yaml
└── environment/prod/
├── prod.yaml
└── project/login-svc/
├── login-svc.yaml
├── database/accounts-db.yaml
└── deployment-config/payment-api.yaml
The manifests
Foundation, source/build, registry, and identity come straight from the earlier pages (Organization Foundation, Source & Build, Access & Identity). The delivery + data pieces that tie it together:
# .../release-track/main-track/application-set/payments/application/payment-api.yaml
apiVersion: lowops.manifests.v1
kind: Application
metadata:
name: payment-api
application-set: payments
release-track: main-track
organizational-unit: retail-banking
organization: fincorp
spec:
description: "Payment processing API."
target: CLOUD_RUN
meshStrategy: DISABLED
source: payment-api # the BuildDefinition
container: payment-api # container it produces
project: login-svc
accessControl:
database:
name: accounts-db
schema: accounts
privileges: [USAGE, CREATE]
secretSource:
envVar: DATABASE_URL
# .../environment/prod/project/login-svc/database/accounts-db.yaml
apiVersion: lowops.manifests.v1
kind: Database
metadata:
name: accounts-db
project: login-svc
environment: prod
organizational-unit: retail-banking
organization: fincorp
spec:
description: "Accounts and auth data."
databases:
- name: accounts
alloydb:
cpuCount: 4
clusterSize: 1
# .../environment/prod/project/login-svc/deployment-config/payment-api.yaml
apiVersion: lowops.manifests.v1
kind: DeploymentConfig
metadata:
name: payment-api # matches the Application
project: login-svc
environment: prod
organizational-unit: retail-banking
organization: fincorp
spec:
version: v1.0.0
container:
env:
- name: LOG_LEVEL
value: info
ports:
8080: http
scaling:
min: 1
max: 5
health:
liveness:
protocol: HTTP
port: 8080
path: /healthz
What happens on merge
- The engine builds a dependency graph from all the manifests'
metadatalinks. - It provisions the foundation (org → OU → environment → project), the GitHub repo + CI, and the registry.
- CI builds and publishes the
payment-apiimage. - The
Databaseis provisioned with theaccountslogical database; a scoped user and credentials are created forpayment-api. - The
Application+DeploymentConfigroll out to Cloud Run inprod, withDATABASE_URLinjected — promoted through themain-trackstages with approvals.