ci(pages): exclude game dump from Pages deploy (syncing_files timeout) #61
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 (intro homepage + OpenAPI docs) together with the static | |
| # JSON data dump and deploys everything to GitHub Pages. The dataset does not need | |
| # to be complete — whatever is curated in data/ is published. | |
| # 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 | |
| - uses: actions/checkout@v4 | |
| with: | |
| repository: GetTechAPI/TechAPI | |
| path: TechAPI | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Python deps | |
| run: pip install -e . | |
| - name: Validate curated data | |
| env: | |
| TECHAPI_DATA_DIR: ${{ github.workspace }}/TechAPI/data | |
| run: python -m app.validate | |
| - name: Generate static JSON dump + openapi.json | |
| env: | |
| TECHAPI_DATA_DIR: ${{ github.workspace }}/TechAPI/data | |
| run: python -m app.dump --output dump | |
| - 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 (Astro dist + JSON data dump) | |
| run: | | |
| mkdir -p _site | |
| cp -r site/dist/. _site/ | |
| cp -r dump/. _site/ | |
| # Games remain available as versioned data in the TechAPI repo, but | |
| # publishing ~1M per-record files exceeds the fixed GitHub Pages | |
| # deployment window (the deploy step times out at "syncing_files"). | |
| # Exclude them from the published artifact to keep deploys reliable, | |
| # mirroring the TechAPI homepage workflow. | |
| 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 |