name: Deploy Site on: push: branches: [main] paths: - "platforms/**" - "emulators/**" - "provenance/**" - "wiki/**" # Every script the build runs or imports (tests/test_workflow_paths.py). - "scripts/artifacts.py" - "scripts/auto_fetch.py" - "scripts/common.py" - "scripts/cross_reference.py" - "scripts/crypto_verify.py" - "scripts/deterministic_zip.py" - "scripts/dumpcatalog.py" - "scripts/generate_pack.py" - "scripts/generate_readme.py" - "scripts/generate_site.py" - "scripts/hashing.py" - "scripts/largefiles.py" - "scripts/list_platforms.py" - "scripts/nativemode.py" - "scripts/packextras.py" - "scripts/packpaths.py" - "scripts/packreadme.py" - "scripts/packresolve.py" - "scripts/packverify.py" - "scripts/profile_sync.py" - "scripts/provenance_report.py" - "scripts/refresh_data_dirs.py" - "scripts/region.py" - "scripts/release_record.py" - "scripts/restore_large_files.py" - "scripts/safeparse.py" - "scripts/sect233r1.py" - "scripts/siterender.py" - "scripts/sitesources.py" - "scripts/sitewrite.py" - "scripts/slot.py" - "scripts/slots.py" - "scripts/split_pack.py" - "scripts/truth.py" - "scripts/upstream.py" - "scripts/validate_schemas.py" - "scripts/validate_site.py" - "scripts/validation.py" - "scripts/verify.py" - "scripts/ziptools.py" - "schemas/**" - "tests/**" - "docs_assets/**" - "install/**" - "install.py" - "database.json" - "release.json" - "mkdocs.yml" - ".github/workflows/deploy-site.yml" workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: # Pages deployments must run to completion: cancelling one mid-flight # leaves the deployment stuck and makes the next runs time out waiting # on it. Queued runs collapse to the latest instead. group: pages cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 with: python-version: "3.12" # mkdocs-material >= 9.7.5 caps mkdocs < 2; the upper bound keeps a major # theme release from changing the site without a deliberate bump here. - run: pip install pyyaml jsonschema==4.26.0 "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14" - name: Validate data contracts run: python scripts/validate_schemas.py # Coverage is resolved against the disk, so a checkout without the # release assets and the data caches reports files as missing and the # generated README stops matching the committed one. - name: Restore large files from release run: | mkdir -p .cache/large gh release download large-files -D .cache/large/ 2>/dev/null || true python scripts/restore_large_files.py env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Refresh data directories run: python scripts/refresh_data_dirs.py - name: Generate site run: | python scripts/generate_site.py python scripts/generate_readme.py --db database.json --platforms-dir platforms mkdocs build --strict python scripts/validate_site.py # write_if_changed() compares content with its timestamp line stripped, # so a run that only moves the clock leaves the file untouched and this # stays a real staleness check rather than a guaranteed failure. - name: Require committed README and CONTRIBUTING to be current run: git diff --exit-code -- README.md CONTRIBUTING.md - name: Setup Pages uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6 - name: Upload artifact uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5 with: path: site/ deploy: needs: build runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1