feat(yuanbao): cache resolved media resources by resourceId #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy Site | |
| on: | |
| release: | |
| types: [published] | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'website/**' | |
| - 'skills/**' | |
| - 'optional-skills/**' | |
| - '.github/workflows/deploy-site.yml' | |
| workflow_dispatch: | |
| permissions: | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: pages | |
| cancel-in-progress: false | |
| jobs: | |
| deploy-vercel: | |
| # Triggered automatically on release publish (production cuts) and | |
| # manually via `gh workflow run deploy-site.yml` when an out-of-band | |
| # main commit needs to ship live before the next release tag — e.g. | |
| # a skills-index PR that doesn't touch website/** paths and so | |
| # doesn't auto-deploy via the deploy-docs path. | |
| if: github.event_name == 'release' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Trigger Vercel Deploy | |
| run: curl -X POST "${{ secrets.VERCEL_DEPLOY_HOOK }}" | |
| deploy-docs: | |
| if: github.repository == 'NousResearch/hermes-agent' | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deploy.outputs.page_url }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: website/package-lock.json | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: '3.11' | |
| - name: Install PyYAML for skill extraction | |
| run: pip install pyyaml==6.0.2 httpx==0.28.1 | |
| - name: Build skills index (unified multi-source catalog) | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Always rebuild — the file isn't committed (gitignored), so a | |
| # fresh checkout starts without it and we want the freshest crawl | |
| # in every deploy. Failure is non-fatal: extract-skills.py will | |
| # fall back to the legacy snapshot cache and the Skills Hub page | |
| # still renders, just without the latest community catalog. | |
| python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)" | |
| - name: Extract skill metadata for dashboard | |
| run: python3 website/scripts/extract-skills.py | |
| - name: Regenerate per-skill docs pages + catalogs | |
| run: python3 website/scripts/generate-skill-docs.py | |
| - name: Install dependencies | |
| run: npm ci | |
| working-directory: website | |
| - name: Build Docusaurus | |
| run: npm run build | |
| working-directory: website | |
| - name: Stage deployment | |
| run: | | |
| mkdir -p _site/docs | |
| cp -r website/build/* _site/docs/ | |
| # llms.txt / llms-full.txt are also published at the site root | |
| # (https://hermes-agent.nousresearch.com/llms.txt) because some | |
| # agents and IDE plugins probe the classic root-level path rather | |
| # than /docs/llms.txt. Same file, two URLs, one source of truth. | |
| if [ -f website/build/llms.txt ]; then | |
| cp website/build/llms.txt _site/llms.txt | |
| fi | |
| if [ -f website/build/llms-full.txt ]; then | |
| cp website/build/llms-full.txt _site/llms-full.txt | |
| fi | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 | |
| with: | |
| path: _site | |
| - name: Deploy to GitHub Pages | |
| id: deploy | |
| uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4 |