mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-27 11:22:03 +00:00
`npm ci` / `uv sync` / toolchain header fetches occasionally die on transient network blips — e.g. node-pty's node-gyp fetching Node headers (an undici assert) during the typecheck job's `npm ci`, which killed the job before `tsc` ever ran. "Re-run and it goes green" is exactly what CI should do itself. - New reusable `.github/actions/retry` composite action wraps a command and retries on failure (3x / 10s, command passed via env so it can't inject). Applied to every PR-path network install: npm ci (typecheck, desktop build, docs site), uv sync (tests, e2e), uv tool install (lint), pip install (docs site). - typecheck now runs `npm ci --ignore-scripts`: `tsc` needs only sources + type defs, so skipping install scripts drops node-pty's native rebuild (whose header fetch was the flake) and is faster. Validated locally — tsc passes for ui-tui, apps/shared, and apps/desktop with scripts skipped. - ripgrep download uses `curl --retry`. Docker (main-only) and the release/windows workflows are intentionally left for a follow-up.
71 lines
2.3 KiB
YAML
71 lines
2.3 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'
|
|
uses: ./.github/actions/retry
|
|
with:
|
|
command: 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'
|
|
uses: ./.github/actions/retry
|
|
with:
|
|
command: 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
|