name: Deploy Site on: push: branches: [main] paths: - "platforms/**" - "emulators/**" - "provenance/**" - "wiki/**" - "scripts/generate_site.py" - "scripts/generate_readme.py" - "scripts/validate_site.py" - "scripts/verify.py" - "scripts/common.py" - "schemas/**" - "tests/**" - "docs_assets/**" - "install/**" - "install.py" - "database.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