Skip to content

Commit 30c1023

Browse files
Merge remote-tracking branch 'origin/main' into kkb-hugo-docs-migration
Signed-off-by: Kristin Brown <kristin.brown@solo.io>
2 parents 4d92220 + a63c85e commit 30c1023

9 files changed

Lines changed: 804 additions & 10 deletions

File tree

.github/workflows/preview.yaml

Lines changed: 64 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
name: Deploy Preview
2+
3+
# Runs on every PR to main. Builds the combined site (Hugo docs + Next.js
4+
# marketing Worker) and uploads it as an isolated Worker VERSION with its own
5+
# preview URL. It deliberately uses `wrangler versions upload`, NOT `deploy`, so
6+
# production traffic is never shifted — the currently-deployed version keeps
7+
# serving prod. Promotion to production happens only via production.yaml
8+
# (on merge to main).
29
on:
310
pull_request:
411
types:
@@ -7,6 +14,11 @@ on:
714
branches:
815
- main
916

17+
# Cancel superseded preview runs for the same PR.
18+
concurrency:
19+
group: preview-${{ github.ref }}
20+
cancel-in-progress: true
21+
1022
jobs:
1123
deploy:
1224
runs-on: ubuntu-latest
@@ -18,21 +30,65 @@ jobs:
1830
with:
1931
node-version: 20.x
2032

33+
- name: Setup Go
34+
uses: actions/setup-go@v5
35+
with:
36+
go-version: '1.24'
37+
38+
- name: Setup Hugo
39+
uses: peaceiris/actions-hugo@v3
40+
with:
41+
hugo-version: '0.160.1'
42+
extended: true
43+
2144
- name: Install dependencies
22-
run: npm ci
45+
run: |
46+
npm ci
47+
cd docs-site && npm ci
48+
49+
# Builds the Hugo docs, injects them into public/docs, then builds the
50+
# OpenNext Worker (which bundles public/ as static assets). HUGO=hugo uses
51+
# the Hugo installed above instead of the local hugo160 alias.
52+
- name: Build (Hugo docs + inject into /docs + Worker)
53+
run: make build HUGO=hugo
2354

24-
- name: Build the site
25-
run: npm run build:worker
55+
# Derive a stable preview alias from the PR branch name. Cloudflare preview
56+
# aliases must be a valid subdomain label (lowercase alphanumerics and
57+
# hyphens), and `<alias>-<worker>` must stay under the 63-char DNS limit, so
58+
# sanitize and cap the length.
59+
- name: Compute preview alias from branch name
60+
id: alias
61+
run: |
62+
alias=$(echo "${{ github.head_ref }}" \
63+
| tr '[:upper:]' '[:lower:]' \
64+
| sed 's/[^a-z0-9-]/-/g; s/-\{2,\}/-/g; s/^-*//; s/-*$//' \
65+
| cut -c1-40)
66+
echo "alias=$alias" >> "$GITHUB_OUTPUT"
67+
echo "Preview alias: $alias"
2668
27-
- name: Create website preview
69+
- name: Upload preview version (does NOT touch production)
2870
id: deploy
2971
uses: cloudflare/wrangler-action@v3.14.1
3072
with:
3173
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
3274
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
33-
command: deploy --minify
75+
# Upload a new Worker version and get a preview URL WITHOUT shifting
76+
# production traffic. `deploy` promotes the version to 100% live, so PR
77+
# runs were redeploying prod. `versions upload` keeps prod on the
78+
# currently-deployed version; production is deployed only by
79+
# production.yaml (on merge to main).
80+
#
81+
# --preview-alias gives a STABLE, branch-named preview URL
82+
# (<alias>-<worker>.<subdomain>.workers.dev) that updates in place on
83+
# each push, instead of a new per-version hostname every time.
84+
command: versions upload --minify --preview-alias ${{ steps.alias.outputs.alias }}
3485

35-
- name: Print website URL
86+
- name: Print website URLs
3687
env:
37-
DEPLOYMENT_URL: ${{ steps.deploy.outputs.deployment-url }}
38-
run: echo $DEPLOYMENT_URL
88+
# Per-version URL (changes each push) from the wrangler-action output;
89+
# stable alias URL built from the branch alias + fixed worker/subdomain.
90+
VERSION_URL: ${{ steps.deploy.outputs.deployment-url }}
91+
ALIAS: ${{ steps.alias.outputs.alias }}
92+
run: |
93+
echo "Version Preview URL: ${VERSION_URL}"
94+
echo "Version Preview Alias URL: https://${ALIAS}-kagent-website.solo-io.workers.dev"

src/app/blog/page.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ function shortDate(date: string) {
1414
}
1515

1616
const posts = [
17+
{
18+
slug: 'dnb-kagent-agentgateway',
19+
publishDate: '2026-07-13',
20+
title: 'How One Platform Team Scaled AI Adoption with Kagent and Agentgateway',
21+
description: 'Lin spoke with David Karlsen and Ibrahim Umar from DNB about their journey adopting kagent and agentgateway',
22+
authorId: 'linsun',
23+
},
24+
{
25+
slug: 'deploy-kagent-with-agent-substrate',
26+
publishDate: '2026-07-13',
27+
title: 'Code Share: Deploy kagent with Agent Substrate',
28+
description: 'Agent sessions are bursty and idle most of the time. Agent Substrate multiplexes gVisor-sandboxed actors onto a small pool of warm workers with sub-second suspend/resume. This guide explains the model, the use cases, and how to stand up kagent OSS with substrate on a kind cluster.',
29+
authorId: 'sebastianmaniak',
30+
},
1731
{
1832
slug: 'community-nginx-khook-kagent',
1933
publishDate: '2025-10-15',

src/app/docs/kagent/examples/slack-a2a/page.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ You'll be redirected to the app's basic information page. Next, we need to give
5050
1. Click the OAuth & Permissions tab from the left sidebar.
5151
2. Scroll down to the "Scopes" section.
5252
3. Click "Add an OAuth Scope" in the "Bot Token Scopes" section.
53-
4. From the dropdown menu add the the following scopes (you can add more scopes if you want to experiment with other features):
53+
4. From the dropdown menu add the following scopes (you can add more scopes if you want to experiment with other features):
5454
- `chat:write`
5555
- `commands`
5656

src/app/docs/kagent/resources/helm/page.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,12 @@ A Helm chart for kagent, built with Google ADK
316316
| ui.backendInternalUrl | string | `""` | |
317317
| ui.env | object | `{}` | |
318318
| ui.externalUrl | string | "" (share tools return paths only) | Public-facing base URL of the UI (e.g. https://kagent.example.com). When set, the controller injects KAGENT_UI_URL into agent pods so that share link tools return full clickable URLs instead of relative paths. |
319+
| ui.httpRoute | object | `{"annotations":{},"enabled":false,"hostnames":[],"labels":{},"parentRefs":[],"rules":[]}` | Gateway API `HTTPRoute` for the UI. Requires the Gateway API CRDs (`gateway.networking.k8s.io/v1`) and an existing `Gateway` to attach to via `parentRefs`. Disabled by default; enable to front the UI with a Gateway API implementation (kgateway, Istio, Envoy Gateway, etc.) instead of the OpenShift Route or bundled oauth2-proxy. |
320+
| ui.httpRoute.annotations | object | `{}` | Annotations to add to the `HTTPRoute`. |
321+
| ui.httpRoute.hostnames | list | `[]` | Hostnames matched by the route. |
322+
| ui.httpRoute.labels | object | `{}` | Extra labels to add to the `HTTPRoute` (merged with the chart labels). |
323+
| ui.httpRoute.parentRefs | list | `[]` | Gateways this route attaches to. Required when `enabled` is `true`. |
324+
| ui.httpRoute.rules | list | `[]` | Routing rules. When a rule omits `backendRefs`, it defaults to the UI `Service` on `ui.service.ports.port`. Each rule may also set `matches`, `filters`, and `timeouts`. |
319325
| ui.image.pullPolicy | string | `""` | |
320326
| ui.image.registry | string | `""` | |
321327
| ui.image.repository | string | `"kagent-dev/kagent/ui"` | |

0 commit comments

Comments
 (0)