mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-27 11:22:03 +00:00
Heavy PR checks run on every PR because the workflows deliberately avoid `on.paths` filters — a path-gated workflow leaves its required check pending forever when no matching file changes, blocking merge. So a docs-only PR still spins up the TypeScript matrix, the full Python suite, and ruff/ty. Keep every workflow triggering on every PR (checks always report) but gate the expensive *steps* on what the PR touches. Skipping a step (not the job) leaves the job green, so required checks never hang — the same idiom already proven in contributor-check.yml. A classifier (scripts/ci/classify_changes.py) maps the PR diff to three lanes — python, frontend, site — surfaced as step outputs by a composite action (.github/actions/detect-changes). Fail-open: an empty diff or any .github/ change runs everything; python is a denylist (skipped only when every file is provably prose or a frontend-only package); skills/**/SKILL.md counts as python-relevant since the skill-doc tests read that tree. Non-PR events always run the full pipeline.
67 lines
2.2 KiB
YAML
67 lines
2.2 KiB
YAML
name: Docs Site Checks
|
|
|
|
on:
|
|
# No paths filter — the job must always run so the required check
|
|
# reports a status (path-gated workflows leave checks "pending" forever
|
|
# when no matching files change, which blocks merge).
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
docs-site-checks:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
fetch-depth: 0 # full history so detect-changes can diff base...head
|
|
|
|
# Skip the site build on PRs that touch nothing the docs site is built
|
|
# from (website/, skills/, optional-skills/). The job still reports green
|
|
# (only the steps below are skipped) so the required check never hangs.
|
|
- name: Detect affected areas
|
|
id: changes
|
|
uses: ./.github/actions/detect-changes
|
|
|
|
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
|
if: steps.changes.outputs.site == 'true'
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
cache-dependency-path: website/package-lock.json
|
|
|
|
- name: Install website dependencies
|
|
if: steps.changes.outputs.site == 'true'
|
|
run: npm ci
|
|
working-directory: website
|
|
|
|
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
if: steps.changes.outputs.site == 'true'
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
- name: Install ascii-guard
|
|
if: steps.changes.outputs.site == 'true'
|
|
run: python -m pip install ascii-guard==2.3.0 pyyaml==6.0.3
|
|
|
|
- name: Extract skill metadata for dashboard
|
|
if: steps.changes.outputs.site == 'true'
|
|
run: python3 website/scripts/extract-skills.py
|
|
|
|
- name: Regenerate per-skill docs pages + catalogs
|
|
if: steps.changes.outputs.site == 'true'
|
|
run: python3 website/scripts/generate-skill-docs.py
|
|
|
|
- name: Lint docs diagrams
|
|
if: steps.changes.outputs.site == 'true'
|
|
run: npm run lint:diagrams
|
|
working-directory: website
|
|
|
|
- name: Build Docusaurus
|
|
if: steps.changes.outputs.site == 'true'
|
|
run: npm run build
|
|
working-directory: website
|