diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml index 3c471f376..c55a62908 100644 --- a/.github/workflows/deploy-site.yml +++ b/.github/workflows/deploy-site.yml @@ -41,11 +41,19 @@ jobs: python-version: '3.11' - name: Install PyYAML for skill extraction - run: pip install pyyaml + 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 diff --git a/.github/workflows/skills-index.yml b/.github/workflows/skills-index.yml new file mode 100644 index 000000000..6c03e4074 --- /dev/null +++ b/.github/workflows/skills-index.yml @@ -0,0 +1,101 @@ +name: Build Skills Index + +on: + schedule: + # Run twice daily: 6 AM and 6 PM UTC + - cron: '0 6,18 * * *' + workflow_dispatch: # Manual trigger + push: + branches: [main] + paths: + - 'scripts/build_skills_index.py' + - '.github/workflows/skills-index.yml' + +permissions: + contents: read + +jobs: + build-index: + # Only run on the upstream repository, not on forks + if: github.repository == 'NousResearch/hermes-agent' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: pip install httpx pyyaml + + - name: Build skills index + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: python scripts/build_skills_index.py + + - name: Upload index artifact + uses: actions/upload-artifact@v4 + with: + name: skills-index + path: website/static/api/skills-index.json + retention-days: 7 + + deploy-with-index: + needs: build-index + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deploy.outputs.page_url }} + # Only deploy on schedule or manual trigger (not on every push to the script) + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + steps: + - uses: actions/checkout@v4 + + - uses: actions/download-artifact@v4 + with: + name: skills-index + path: website/static/api/ + + - 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 + + - name: Extract skill metadata for dashboard + run: python3 website/scripts/extract-skills.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 landingpage/* _site/ + cp -r website/build/* _site/docs/ + 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