1+ name : Update Reference Documentation
2+
3+ on :
4+ workflow_dispatch : # Allow manual triggers for now
5+ # Later we can add:
6+ # push:
7+ # paths:
8+ # - 'api/v1alpha2/**'
9+ # branches:
10+ # - main
11+
12+ jobs :
13+ generate-api-docs :
14+ runs-on : ubuntu-latest
15+
16+ permissions :
17+ contents : write
18+ pull-requests : write
19+
20+ steps :
21+ - name : Checkout kagent repository
22+ uses : actions/checkout@v4
23+ with :
24+ repository : ${{ github.repository_owner }}/kagent
25+ path : kagent
26+
27+ - name : Checkout docs repository
28+ uses : actions/checkout@v4
29+ with :
30+ repository : ${{ github.repository_owner }}/website
31+ path : website
32+
33+ - name : Setup Go
34+ uses : actions/setup-go@v4
35+ with :
36+ go-version : ' 1.24'
37+ cache : false
38+
39+ - name : Set kagent commit SHA
40+ run : echo "KAGENT_COMMIT=$(cd kagent && git rev-parse --short HEAD)" >> $GITHUB_ENV
41+
42+ - name : Verify API directory exists
43+ run : |
44+ if [ ! -d "$GITHUB_WORKSPACE/kagent/go/controller/api/v1alpha2" ]; then
45+ echo "Error: API directory not found at $GITHUB_WORKSPACE/kagent/go/controller/api/v1alpha2"
46+ ls -la "$GITHUB_WORKSPACE/kagent/go/controller/api/"
47+ exit 1
48+ fi
49+ echo "API directory found and verified"
50+
51+ - name : Read max Kubernetes version
52+ run : |
53+ if [ ! -f "website/public/docs/versions/max-kube.md" ]; then
54+ echo "Error: max-kube.md file not found"
55+ exit 1
56+ fi
57+ KUBE_VERSION=$(cat website/public/docs/versions/max-kube.md | tr -d '\n')
58+ echo "KUBE_VERSION=$KUBE_VERSION" >> $GITHUB_ENV
59+ echo "Using Kubernetes version: $KUBE_VERSION"
60+
61+ - name : Generate API Reference
62+ run : |
63+ # Substitute KUBE_VERSION in the config template and write to a temp file
64+ cd "$GITHUB_WORKSPACE/website"
65+ if [ ! -f "scripts/crd-ref-docs-config.yaml" ]; then
66+ echo "Error: crd-ref-docs-config.yaml not found in scripts directory"
67+ exit 1
68+ fi
69+
70+ envsubst < scripts/crd-ref-docs-config.yaml > crd-ref-docs-config.yaml
71+
72+ echo "Changed to docs repository: $PWD"
73+ echo "Using config file:"
74+ cat crd-ref-docs-config.yaml
75+
76+ # Generate API docs
77+ go run github.com/elastic/crd-ref-docs@v0.1.0 \
78+ --source-path="$GITHUB_WORKSPACE/kagent/go/controller/api/v1alpha2/" \
79+ --renderer=markdown \
80+ --output-path ./ \
81+ --config=crd-ref-docs-config.yaml
82+
83+ # Check if generation was successful
84+ if [ ! -f "./out.md" ]; then
85+ echo "Error: API docs generation failed - out.md not created"
86+ exit 1
87+ fi
88+
89+ # Remove the temporary config file so it is not included in the PR
90+ rm -f crd-ref-docs-config.yaml
91+
92+ # Create index file with frontmatter
93+ echo '---' > src/app/docs/kagent/resources/api-ref/page.mdx
94+ echo 'title: "API Reference"' >> src/app/docs/kagent/resources/api-ref/page.mdx
95+ echo 'sectionOrder: 1' >> src/app/docs/kagent/resources/api-ref/page.mdx
96+ echo 'description: "kagent API reference documentation"' >> src/app/docs/kagent/resources/api-ref/page.mdx
97+ echo '---' >> src/app/docs/kagent/resources/api-ref/page.mdx
98+ echo '' >> src/app/docs/kagent/resources/api-ref/page.mdx
99+ echo 'export const metadata = {' >> src/app/docs/kagent/resources/api-ref/page.mdx
100+ echo ' title: "API Reference",' >> src/app/docs/kagent/resources/api-ref/page.mdx
101+ echo ' description: "kagent API reference documentation",' >> src/app/docs/kagent/resources/api-ref/page.mdx
102+ echo ' author: "kagent.dev"' >> src/app/docs/kagent/resources/api-ref/page.mdx
103+ echo '};' >> src/app/docs/kagent/resources/api-ref/page.mdx
104+ echo '' >> src/app/docs/kagent/resources/api-ref/page.mdx
105+ cat "./out.md" >> src/app/docs/kagent/resources/api-ref/page.mdx
106+
107+ # Remove temporary file
108+ rm -f "./out.md"
109+
110+ # Verify the output file was created
111+ if [ ! -f "src/app/docs/kagent/resources/api-ref/page.mdx" ]; then
112+ echo "Error: Failed to create API docs page"
113+ exit 1
114+ fi
115+
116+ echo "API docs generated successfully"
117+
118+ - name : Generate Helm Chart Reference
119+ run : |
120+ echo "Looking for Helm directory:"
121+ ls -la "$GITHUB_WORKSPACE/kagent/helm" || echo "Helm directory not found!"
122+
123+ # Update docs repository
124+ cd "$GITHUB_WORKSPACE/website"
125+ echo "Changed to docs repository : $PWD"
126+
127+ # Create directory for Helm docs
128+ mkdir -p src/app/docs/kagent/resources/helm/
129+
130+ # Generate Helm Docs for kagent chart
131+ if [ ! -d "$GITHUB_WORKSPACE/kagent/helm/kagent" ]; then
132+ echo "Error : kagent Helm chart directory not found"
133+ exit 1
134+ fi
135+
136+ echo "Processing kagent Helm chart..."
137+
138+ # Generate the helm documentation
139+ go run github.com/norwoodj/helm-docs/cmd/helm-docs@v1.14.2 \
140+ --chart-search-root "$GITHUB_WORKSPACE/kagent/helm/kagent" \
141+ --dry-run > "src/app/docs/kagent/resources/helm/temp.mdx"
142+
143+ # Remove badge line and following empty line
144+ # (might be replaced by helm docs template in the future)
145+ sed -i '/!\[Version:/,/^$/d' "src/app/docs/kagent/resources/helm/temp.mdx"
146+
147+ # Remove backticks from the Default column in the table
148+ sed -i 's/| `\([^`]*\)` |/| \1 |/g' "src/app/docs/kagent/resources/helm/temp.mdx"
149+
150+ # Add frontmatter
151+ echo '---' > "src/app/docs/kagent/resources/helm/page.mdx"
152+ echo 'title : " Helm Chart Configuration" ' >> "src/app/docs/kagent/resources/helm/page.mdx"
153+ echo ' sectionOrder: 2' >> "src/app/docs/kagent/resources/helm/page.mdx"
154+ echo 'description : " kagent Helm chart configuration reference" ' >> "src/app/docs/kagent/resources/helm/page.mdx"
155+ echo ' ---' >> "src/app/docs/kagent/resources/helm/page.mdx"
156+ echo '' >> "src/app/docs/kagent/resources/helm/page.mdx"
157+ echo 'export const metadata = {' >> "src/app/docs/kagent/resources/helm/page.mdx"
158+ echo ' title : " Helm Chart Configuration" ,' >> "src/app/docs/kagent/resources/helm/page.mdx"
159+ echo ' description : " kagent Helm chart configuration reference" ,' >> "src/app/docs/kagent/resources/helm/page.mdx"
160+ echo ' author : " kagent.dev" ' >> "src/app/docs/kagent/resources/helm/page.mdx"
161+ echo ' };' >> "src/app/docs/kagent/resources/helm/page.mdx"
162+ echo '' >> "src/app/docs/kagent/resources/helm/page.mdx"
163+
164+ # Append the processed helm documentation
165+ cat "src/app/docs/kagent/resources/helm/temp.mdx" >> "src/app/docs/kagent/resources/helm/page.mdx"
166+
167+ # Clean up temporary file
168+ rm -f "src/app/docs/kagent/resources/helm/temp.mdx"
169+
170+ echo "=== Debug : After creating index file ==="
171+ echo "Content directory structure:"
172+ ls -la src/app/docs/kagent/resources/helm/
173+
174+ - name : Create Pull Request
175+ uses : peter-evans/create-pull-request@v6
176+ with :
177+ token : ${{ secrets.GITHUB_TOKEN }}
178+ path : website
179+ commit-message : " docs: Update API and kagent Helm reference docs"
180+ signoff : true
181+ title : " Update API and kagent Helm reference docs"
182+ body : |
183+ Automated API and kagent Helm chart documentation update based on the latest commit [`${{ env.KAGENT_COMMIT }}`](https://github.com/${{ github.repository_owner }}/kagent/commit/${{ env.KAGENT_COMMIT }}) to `main` in the **kagent** repository.
184+
185+ This PR was automatically generated by the [**Update Reference documentation** workflow](https://github.com/kagent-dev/website/actions/workflows/update-ref-docs.yaml).
186+ branch : api-gen-update
187+ branch-suffix : timestamp
188+ delete-branch : true
189+ base : main
190+ labels : |
191+ documentation
192+ automated pr
0 commit comments