name: Deploy Site on: push: branches: [main] paths: - 'website/**' - 'landingpage/**' - 'skills/**' - 'optional-skills/**' - '.github/workflows/deploy-site.yml' workflow_dispatch: permissions: pages: write id-token: write concurrency: group: pages cancel-in-progress: false jobs: build-and-deploy: # Only run on the upstream repository, not on forks if: github.repository == 'NousResearch/hermes-agent' runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deploy.outputs.page_url }} steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 20 cache: npm cache-dependency-path: website/package-lock.json - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 with: python-version: '3.11' - name: Install PyYAML for skill extraction run: pip install pyyaml==6.0.2 httpx==0.28.1 - name: Extract skill metadata for dashboard run: python3 website/scripts/extract-skills.py - name: Build skills index (if not already present) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | if [ ! -f website/static/api/skills-index.json ]; then python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)" fi - 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 # Landing page at root cp -r landingpage/* _site/ # Docusaurus at /docs/ cp -r website/build/* _site/docs/ # CNAME so GitHub Pages keeps the custom domain between deploys echo "hermes-agent.nousresearch.com" > _site/CNAME - 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