mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-24 12:49:03 -05:00
scripts/sitediagrams.py writes the explainer, install flow, verification modes, MinUI card, pipeline and data layer diagrams as inline SVG from the registry, the platform files, the install manifests and the pipeline step list. A page asks for one with an image comment, which the decoration pass resolves. The two mermaid diagrams of the architecture page are replaced, so no page loads mermaid from unpkg. Platform logos and system icons are copied once by fetch_site_images.py with their source and owner recorded, and the build rewrites the remote links to the copies. validate_site refuses an image from another host. Three registry logos named a personal avatar instead of the project's (RomM, ROCKNIX, MiSTer FPGA) and MyMinUI's was a GitHub identicon, now dropped. One 1200x630 sharing card per section, a 404 page with search and the two entry pages, and a list of screenshots that need a real device.
147 lines
4.7 KiB
YAML
147 lines
4.7 KiB
YAML
name: Deploy Site
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "platforms/**"
|
|
- "emulators/**"
|
|
- "provenance/**"
|
|
- "wiki/**"
|
|
- "exports/**"
|
|
# Every script the build runs or imports, and no other
|
|
# (tests/test_workflow_paths.py).
|
|
- "scripts/artifacts.py"
|
|
- "scripts/auto_fetch.py"
|
|
- "scripts/common.py"
|
|
- "scripts/cross_reference.py"
|
|
- "scripts/crypto_verify.py"
|
|
- "scripts/derivations.py"
|
|
- "scripts/deterministic_zip.py"
|
|
- "scripts/dumpcatalog.py"
|
|
- "scripts/exporter/baseline.py"
|
|
- "scripts/exporter/candidates.py"
|
|
- "scripts/gamedata.py"
|
|
- "scripts/generate_pack.py"
|
|
- "scripts/generate_readme.py"
|
|
- "scripts/generate_site.py"
|
|
- "scripts/hashing.py"
|
|
- "scripts/largefiles.py"
|
|
- "scripts/launchers.py"
|
|
- "scripts/manifestselect.py"
|
|
- "scripts/mkdocs_hooks.py"
|
|
- "scripts/nativemode.py"
|
|
- "scripts/packextras.py"
|
|
- "scripts/packpaths.py"
|
|
- "scripts/packreadme.py"
|
|
- "scripts/packresolve.py"
|
|
- "scripts/packverify.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/sitediagrams.py"
|
|
- "scripts/siteexports.py"
|
|
- "scripts/siterender.py"
|
|
- "scripts/sitesources.py"
|
|
- "scripts/sitewrite.py"
|
|
- "scripts/slot.py"
|
|
- "scripts/slots.py"
|
|
- "scripts/sourceref.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/**"
|
|
- "docs_assets/**"
|
|
- "install/**"
|
|
- "install.py"
|
|
- "database.json"
|
|
- "release.json"
|
|
- "derivable.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, and the upper bound keeps a major
|
|
# theme release from changing the site without a deliberate bump here.
|
|
- run: pip install pyyaml "jsonschema[format-nongpl]==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
|