From 8823a3db5e5aab5529e28726873d6cc33f5bc6ad Mon Sep 17 00:00:00 2001 From: Tom Bar Date: Tue, 2 Jun 2026 14:26:06 -0300 Subject: [PATCH 1/2] docs: point all docs links to undermountain.cc/labs/hermes-operator The docs are now published as a subsite of undermountain.cc (cloned + built by the web repo, served at /labs/hermes-operator/) rather than this repo's GitHub Pages. Update every reference: - README (Quickstart / API reference / Examples), CONTRIBUTING, the Helm chart NOTES.txt, and mkdocs.yml site_url -> undermountain.cc/labs/hermes-operator. - Repurpose the Docs workflow from 'build + deploy to GitHub Pages' to a strict mkdocs build check (Pages is no longer used; publishing happens on the web side). Keeps the broken-link/nav gate on docs PRs, drops the pages:write/id-token perms and the deploy steps. Signed-off-by: Tom Bar --- .github/workflows/docs.yml | 34 ++++++++++------------ CONTRIBUTING.md | 2 +- README.md | 6 ++-- charts/hermes-operator/templates/NOTES.txt | 2 +- docs/mkdocs.yml | 2 +- 5 files changed, 21 insertions(+), 25 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 06bb4a5..fe0eb5c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -3,7 +3,17 @@ name: Docs +# Validates the MkDocs site builds cleanly (--strict catches broken links and nav). +# Publishing is handled out-of-repo: the undermountain.cc site clones this repo and +# serves the built docs at https://undermountain.cc/labs/hermes-operator/. This repo +# no longer deploys to GitHub Pages. + on: + pull_request: + branches: [main] + paths: + - 'docs/**' + - '.github/workflows/docs.yml' push: branches: [main] paths: @@ -12,20 +22,15 @@ on: permissions: contents: read - pages: write - id-token: write concurrency: - group: docs - cancel-in-progress: false + group: docs-${{ github.ref }} + cancel-in-progress: true jobs: - build-deploy: + build: runs-on: ucc-org-runners timeout-minutes: 10 - environment: - name: github-pages - url: ${{ steps.deploy.outputs.page_url }} steps: - uses: actions/checkout@v4 @@ -35,18 +40,9 @@ jobs: cache: pip cache-dependency-path: docs/requirements.txt - - name: Install Mkdocs Material + - name: Install MkDocs Material run: pip install -r docs/requirements.txt - - name: Build site + - name: Build site (strict) working-directory: docs run: mkdocs build --strict --site-dir ../site - - - uses: actions/configure-pages@v5 - - - uses: actions/upload-pages-artifact@v3 - with: - path: site - - - id: deploy - uses: actions/deploy-pages@v4 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 77263fa..c302c1a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,7 +58,7 @@ The operator does NOT: - Carry Hermes-application semantics in the CRD (no model selection, prompt tuning, routing — those are agent-runtime concerns). - Build or push Hermes container images (separate concern). -User-facing design rationale lives in the [docs site](https://undermountaincc.github.io/hermes-operator/). +User-facing design rationale lives in the [docs site](https://undermountain.cc/labs/hermes-operator/). ## Hard invariants diff --git a/README.md b/README.md index d916bde..4e4fb1d 100644 --- a/README.md +++ b/README.md @@ -62,9 +62,9 @@ See [docs/install.md](./docs/docs/install.md) for cert-manager prerequisite + pe ## Documentation -- [Quickstart](https://undermountaincc.github.io/hermes-operator/) — install + first agent -- [API reference](https://undermountaincc.github.io/hermes-operator/api-reference/) — every field documented -- [Examples](https://undermountaincc.github.io/hermes-operator/examples/) — multi-gateway, fallback LLM providers, RBAC patterns +- [Quickstart](https://undermountain.cc/labs/hermes-operator/) — install + first agent +- [API reference](https://undermountain.cc/labs/hermes-operator/api-reference/) — every field documented +- [Examples](https://undermountain.cc/labs/hermes-operator/examples/) — multi-gateway, fallback LLM providers, RBAC patterns ## E2E tests diff --git a/charts/hermes-operator/templates/NOTES.txt b/charts/hermes-operator/templates/NOTES.txt index 4baf9bd..88dccba 100644 --- a/charts/hermes-operator/templates/NOTES.txt +++ b/charts/hermes-operator/templates/NOTES.txt @@ -5,7 +5,7 @@ hermes-operator installed successfully. Verify the operator is running: kubectl -n {{ $relns }} rollout status deployment {{ $relname }}-controller-manager --timeout=120s -Create your first HermesAgent — see https://undermountaincc.github.io/hermes-operator/ for a quickstart. +Create your first HermesAgent — see https://undermountain.cc/labs/hermes-operator/ for a quickstart. {{- if not .Values.operator.allowedClusterRoles }} diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 4523e33..24380ed 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 site_name: hermes-operator -site_url: https://undermountaincc.github.io/hermes-operator/ +site_url: https://undermountain.cc/labs/hermes-operator/ site_description: Kubernetes operator for the Hermes AI agent repo_url: https://github.com/UndermountainCC/hermes-operator repo_name: UndermountainCC/hermes-operator From 2d60666d7b898540a7757eb54eec360094f147e3 Mon Sep 17 00:00:00 2001 From: Tom Bar Date: Tue, 2 Jun 2026 14:36:22 -0300 Subject: [PATCH 2/2] ci: ubuntu-latest runners + skip heavy CI on docs-only changes Public-launch prep: - Swap all workflow runners from the self-hosted ucc-org-runners pool to ubuntu-latest. Self-hosted was only to dodge the Free-plan billing wall while private; public repos get free GitHub-hosted minutes. - Add paths-ignore: ['**.md','docs/**'] to ci.yml + test-e2e.yml so doc-only PRs skip the Go build/lint and the ~20-min E2E suite. - Add a disk-free step to the E2E job: ubuntu-latest has ~14GB free, and the suite pulls a 2.5GB image (+ a 2.5GB tar) plus Kind node images; reclaiming the preinstalled dotnet/android/CodeQL toolchains keeps it from filling up. Signed-off-by: Tom Bar --- .github/workflows/ci.yml | 10 ++++++---- .github/workflows/docs.yml | 2 +- .github/workflows/release.yml | 8 ++++---- .github/workflows/test-e2e.yml | 11 ++++++++++- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 180638b..0b79395 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,8 +6,10 @@ name: CI on: push: branches: [main] + paths-ignore: ['**.md', 'docs/**'] pull_request: branches: [main] + paths-ignore: ['**.md', 'docs/**'] permissions: contents: read @@ -19,7 +21,7 @@ concurrency: jobs: lint: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 @@ -36,7 +38,7 @@ jobs: args: --timeout=10m manifests-no-drift: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 @@ -56,7 +58,7 @@ jobs: fi test: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 20 strategy: fail-fast: false @@ -76,7 +78,7 @@ jobs: run: make test dco: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 5 if: github.event_name == 'pull_request' steps: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index fe0eb5c..1d6e6b1 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -29,7 +29,7 @@ concurrency: jobs: build: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d170e10..b36c25b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ env: jobs: # ── amd64 build ───────────────────────────────────────────────────────────── build-amd64: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 20 permissions: contents: read @@ -63,7 +63,7 @@ jobs: # ── arm64 build ───────────────────────────────────────────────────────────── build-arm64: - runs-on: ucc-org-runners + runs-on: ubuntu-latest timeout-minutes: 45 permissions: contents: read @@ -101,7 +101,7 @@ jobs: # ── manifest assembly + signing + GitHub Release ──────────────────────────── release: - runs-on: ucc-org-runners + runs-on: ubuntu-latest needs: [build-amd64, build-arm64] timeout-minutes: 15 steps: @@ -189,7 +189,7 @@ jobs: # ── Helm chart publish ─────────────────────────────────────────────────────── publish-chart: - runs-on: ucc-org-runners + runs-on: ubuntu-latest needs: release timeout-minutes: 10 permissions: diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index 38c6c28..5d49dec 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -5,13 +5,15 @@ name: E2E on: pull_request: branches: [main] + paths-ignore: ['**.md', 'docs/**'] push: branches: [main] + paths-ignore: ['**.md', 'docs/**'] jobs: e2e: name: kind + make test-e2e - runs-on: ucc-org-runners + runs-on: ubuntu-latest # 30m go test timeout (set in Makefile) + image builds + cert-manager # install can push wall-clock past the previous 30m job cap. timeout-minutes: 45 @@ -19,6 +21,13 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Free up disk space + run: | + sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \ + /opt/hostedtoolcache/CodeQL /usr/local/share/boost + sudo docker image prune --all --force >/dev/null 2>&1 || true + df -h / + - name: Set up Go uses: actions/setup-go@v5 with: