mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 05:53:23 -05:00
A CI checkout omits every file over 50 MB, so verify and generate_pack resolve those database entries against a disk that does not hold them and report them missing. The generated README then stops matching the committed one for a reason that has nothing to do with staleness. restore_large_files.py writes them back from the release cache, matched by SHA1 rather than by name, and only where the path is gitignored and absent. The site workflow runs it, and refreshes the data directories, before generating.
100 lines
3.2 KiB
YAML
100 lines
3.2 KiB
YAML
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.23.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@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5
|