- Add gov-portals-runtime.v1.json + schema; jq gate in validate-config-files - Python: parity-deploy-targets, parity-operational-template (IP strict, hostname WARN), parity-gov-portals-runtime; validate-vm-routing-parity.sh wrapper - check-gov-portal-workflow-canonical-strings.sh for monorepo Pattern A - PORTAL_WORKFLOW_PARITY.md; template headers; repos README; operator checklist secrets - report-gitea-cd-parity runs full VM routing parity; task doc marked complete - GOV_PORTALS_XOM_DEV + GITEA_GOV + MASTER_INDEX + matrix doc cross-links Co-authored-by: Cursor <cursoragent@cursor.com>
Gitea Actions workflow templates
Copy one of these into your repo as .gitea/workflows/<workflow-name>.yml, then set repo Secrets in Gitea (PHOENIX_DEPLOY_URL, PHOENIX_DEPLOY_TOKEN, and GITEA_TOKEN when the workflow clones gov-portals-monorepo for portal CI).
| Template | Use when |
|---|---|
deploy-via-phoenix-api.yml |
App/service with a row in phoenix-deploy-api/deploy-targets.json |
validate-only.yml |
Libraries/docs — CI gate only, no VM deploy |
repos/ |
Concrete YAML for DBIS, CROMERO, CurrenciCombo — copy into those Gitea repos |
See docs/04-configuration/GITEA_REPO_VM_CD_CI_MATRIX.md for repo ↔ VM mapping.
Operator checklist: docs/00-meta/GITEA_CD_OPERATOR_CHECKLIST.md.
Postgres / Prisma in Actions (self-hosted act_runner)
When a workflow declares services: postgres: (GitHub Actions style):
DATABASE_URL(and Prisma) should use hostpostgres(the service id), not127.0.0.1/localhost— the job runs in Docker on the runner.- Runners managed from this repo must keep
container.networkempty inconfig/gitea-act-runner/config-*.yamlso act_runner creates a per-job network. Seedocs/04-configuration/GITEA_ACT_RUNNER_SETUP.mdtroubleshooting (P1001).
Examples in this monorepo: the-order/.github/workflows/ci.yml, dbis_core/.github/workflows/ci.yml. Copy the same pattern into other Gitea repos (e.g. treasury / DealFlow) that run migrations in CI.
If you install Postgres inside the job container (e.g. apt-get install postgresql + 127.0.0.1), avoid PostgreSQL’s anonymous dollar-quote DO $$ ... $$ inside bash double-quoted run: lines — $$ is the shell PID. Prefer a pg_roles existence check + plain CREATE ROLE, or use a $tag$ ... $tag$ block inside a single-quoted heredoc so bash never expands dollars.