Merge pull request #125 from GetTechAPI/fix/site-playground-resources #340
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: deploy-pages | |
| # Builds the Astro site (site/) and deploys it to GitHub Pages. TechAPI owns its | |
| # own homepage, so it deploys itself (Pages is per-repo). No backend here — the | |
| # static JSON dump the site consumes is produced by TechEngine and committed | |
| # under site/public/v1 (served at <base>/v1/...). | |
| # Enable once: Settings → Pages → Source = GitHub Actions. | |
| on: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: pages | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| # build-history.mjs walks the full git history of the public dump to | |
| # rebuild the homepage growth timeline; a shallow clone hides old syncs. | |
| fetch-depth: 0 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| cache-dependency-path: site/package-lock.json | |
| - name: Build Astro site | |
| run: | | |
| cd site | |
| npm ci | |
| npm run build | |
| - name: Assemble _site | |
| run: | | |
| mkdir -p _site | |
| cp -r site/dist/. _site/ | |
| # Games remain versioned static source data in this repository, but | |
| # publishing nearly one million per-record files exceeds the fixed | |
| # GitHub Pages deployment window. Keep the public homepage artifact | |
| # to the collections it can serve reliably. | |
| rm -rf _site/v1/games | |
| node <<'NODE' | |
| const fs = require("fs"); | |
| const path = "_site/v1/index.json"; | |
| const manifest = JSON.parse(fs.readFileSync(path, "utf8")); | |
| delete manifest.collections?.games; | |
| fs.writeFileSync(path, JSON.stringify(manifest, null, 2) + "\n"); | |
| NODE | |
| touch _site/.nojekyll | |
| - uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: _site | |
| deploy: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - id: deployment | |
| uses: actions/deploy-pages@v4 |