diff --git a/.github/workflows/cms.yml b/.github/workflows/cms.yml index 8c8e8bf..53eb20b 100644 --- a/.github/workflows/cms.yml +++ b/.github/workflows/cms.yml @@ -47,6 +47,7 @@ jobs: exit 1 fi psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f src/db/migrations/0003_cms/up.sql + psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f src/db/migrations/0004_public_core/up.sql - run: npm run typecheck - run: npm run build - name: Start synthetic CMS web process diff --git a/.github/workflows/identity.yml b/.github/workflows/identity.yml index b74f202..00dbd97 100644 --- a/.github/workflows/identity.yml +++ b/.github/workflows/identity.yml @@ -50,6 +50,8 @@ jobs: exit 1 fi psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f src/db/migrations/0002_identity/up.sql + psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f src/db/migrations/0003_cms/up.sql + psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f src/db/migrations/0004_public_core/up.sql - run: npm run typecheck - run: npm run build - name: Start synthetic web process diff --git a/.github/workflows/pages-preview.yml b/.github/workflows/pages-preview.yml new file mode 100644 index 0000000..03fb1e9 --- /dev/null +++ b/.github/workflows/pages-preview.yml @@ -0,0 +1,43 @@ +name: Phase 5 GitHub Pages preview +on: + push: + branches: [phase-05/public-core] + workflow_dispatch: +permissions: + contents: read + pages: write + id-token: write +concurrency: + group: phase-05-pages-preview + cancel-in-progress: false +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - name: Validate owner-confirmed editorial copy + run: node scripts/check_public_copy.mjs + - name: Build bilingual noindex preview + run: python3 scripts/build_pages_preview.py + - name: Check generated pages and publication boundaries + run: | + python3 - <<'PY' + from pathlib import Path + root = Path('pages-preview-output') + pages = list(root.glob('*/**/index.html')) + assert len(pages) == 20, len(pages) + for page in pages: + text = page.read_text(encoding='utf-8') + assert 'name="robots" content="noindex, nofollow"' in text, page + assert '