| 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: |
| |
| if: github.repository == 'NousResearch/hermes-agent' |
| runs-on: ubuntu-latest |
| environment: |
| name: github-pages |
| url: ${{ steps.deploy.outputs.page_url }} |
| steps: |
| - uses: actions/checkout@v4 |
|
|
| - uses: actions/setup-node@v4 |
| with: |
| node-version: 20 |
| cache: npm |
| cache-dependency-path: website/package-lock.json |
|
|
| - uses: actions/setup-python@v5 |
| with: |
| python-version: '3.11' |
|
|
| - name: Install PyYAML for skill extraction |
| run: pip install pyyaml httpx |
|
|
| - 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@v3 |
| with: |
| path: _site |
|
|
| - name: Deploy to GitHub Pages |
| id: deploy |
| uses: actions/deploy-pages@v4 |
|
|