Skip to content

Commit 57b239f

Browse files
authored
Add workflow that builds K8S api spec (#509)
1 parent 4224727 commit 57b239f

File tree

3 files changed

+246
-0
lines changed

3 files changed

+246
-0
lines changed

.github/workflows/k8s_apis_sync.yaml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: k8s_apis_sync
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
release:
7+
type: string
8+
required: true
9+
description: ''
10+
11+
jobs:
12+
k8s_apis_sync:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: 'Checkout'
16+
uses: actions/checkout@v3
17+
18+
- name: 'Install crdoc'
19+
run: |-
20+
curl -LO https://github.com/fybrik/crdoc/releases/download/v0.6.3/crdoc_Linux_x86_64.tar.gz
21+
tar -xvzf crdoc_Linux_x86_64.tar.gz
22+
sudo mv crdoc /bin/crdoc
23+
24+
- name: 'Fetch release'
25+
run: |-
26+
RELEASE="${{ github.event.inputs.release }}"
27+
aws s3 cp s3://redislabs-k8s/${RELEASE}/ --no-sign-request . --recursive --region us-east-1
28+
29+
tar xf redis-enterprise-operator-*.tar.gz
30+
31+
- name: 'Generate READMEs'
32+
run: |-
33+
mkdir artifacts
34+
mkdir templates
35+
cp content/operate/kubernetes/reference/kubernetes-api-reference-template.tmpl templates/template.tmpl
36+
37+
crdoc --resources crds/reaadb_crd.yaml --output artifacts/redis_enterprise_active_active_database_api.md --template templates/template.tmpl
38+
sed -E -i 's/^### RedisEnterpriseActiveActiveDatabase\./### /g' artifacts/redis_enterprise_active_active_database_api.md
39+
sed -E -i 's/^<sup><sup>\[↩ Parent\]\(#redisenterpriseactiveactivedatabase/<sup><sup>\[↩ Parent\]\(#/g' artifacts/redis_enterprise_active_active_database_api.md
40+
sed -E -i 's/<td><b><a href="#redisenterpriseactiveactivedatabase/<td><b><a href="#/' artifacts/redis_enterprise_active_active_database_api.md
41+
42+
crdoc --resources crds/rec_crd.yaml --output artifacts/redis_enterprise_cluster_api.md --template templates/template.tmpl
43+
sed -E -i 's/^### RedisEnterpriseCluster\./### /g' artifacts/redis_enterprise_cluster_api.md
44+
sed -E -i 's/^<sup><sup>\[↩ Parent\]\(#redisenterprisecluster/<sup><sup>\[↩ Parent\]\(#/g' artifacts/redis_enterprise_cluster_api.md
45+
sed -E -i 's/<td><b><a href="#redisenterprisecluster/<td><b><a href="#/' artifacts/redis_enterprise_cluster_api.md
46+
47+
crdoc --resources crds/redb_crd.yaml --output artifacts/redis_enterprise_database_api.md --template templates/template.tmpl
48+
sed -E -i 's/^### RedisEnterpriseDatabase\./### /g' artifacts/redis_enterprise_database_api.md
49+
sed -E -i 's/^<sup><sup>\[↩ Parent\]\(#redisenterprisedatabase/<sup><sup>\[↩ Parent\]\(#/g' artifacts/redis_enterprise_database_api.md
50+
sed -E -i 's/<td><b><a href="#redisenterprisedatabase/<td><b><a href="#/' artifacts/redis_enterprise_database_api.md
51+
52+
crdoc --resources crds/rerc_crd.yaml --output artifacts/redis_enterprise_remote_cluster.md --template templates/template.tmpl
53+
sed -E -i 's/^### RedisEnterpriseRemoteCluster\./### /g' artifacts/redis_enterprise_remote_cluster.md
54+
sed -E -i 's/^<sup><sup>\[↩ Parent\]\(#redisenterpriseremotecluster/<sup><sup>\[↩ Parent\]\(#/g' artifacts/redis_enterprise_remote_cluster.md
55+
sed -E -i 's/<td><b><a href="#redisenterpriseremotecluster/<td><b><a href="#/' artifacts/redis_enterprise_remote_cluster.md
56+
57+
- name: 'Send pull request'
58+
env:
59+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60+
run: |-
61+
RELEASE="${{ github.event.inputs.release }}"
62+
BRANCH="k8s_apis_docs_${RELEASE}"
63+
64+
# Setup git email and username
65+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
66+
git config user.name "github-actions[bot]"
67+
git config --global "url.https://${GH_TOKEN}@github.com/.insteadOf" https://github.com/
68+
69+
git checkout -b "${BRANCH}"
70+
71+
cp artifacts/redis_enterprise_active_active_database_api.md content/operate/kubernetes/reference/
72+
cp artifacts/redis_enterprise_cluster_api.md content/operate/kubernetes/reference/
73+
cp artifacts/redis_enterprise_database_api.md content/operate/kubernetes/reference/
74+
cp artifacts/redis_enterprise_remote_cluster.md content/operate/kubernetes/reference/
75+
76+
git apply content/operate/kubernetes/reference/kubernetes-api-reference-frontmatter.patch
77+
78+
git add content/operate/kubernetes/reference/
79+
git commit -m "k8s api docs ${RELEASE}"
80+
git push origin "${BRANCH}"
81+
82+
gh pr create \
83+
--body "k8s api docs ${RELEASE}" \
84+
--title "k8s api docs ${RELEASE}" \
85+
--head "$BRANCH" \
86+
--base "main"
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
diff --git a/content/operate/kubernetes/reference/redis_enterprise_active_active_database_api.md b/content/operate/kubernetes/reference/redis_enterprise_active_active_database_api.md
2+
index 01e82b1b..cacaa46c 100644
3+
--- a/content/operate/kubernetes/reference/redis_enterprise_active_active_database_api.md
4+
+++ b/content/operate/kubernetes/reference/redis_enterprise_active_active_database_api.md
5+
@@ -5,7 +5,7 @@ categories:
6+
- docs
7+
- operate
8+
- kubernetes
9+
-linkTitle: RedisEnterpriseActiveActiveDatabase API Reference
10+
+linkTitle: REAADB API
11+
weight: 30
12+
---
13+
14+
diff --git a/content/operate/kubernetes/reference/redis_enterprise_cluster_api.md b/content/operate/kubernetes/reference/redis_enterprise_cluster_api.md
15+
index 970ba528..6afe4c50 100644
16+
--- a/content/operate/kubernetes/reference/redis_enterprise_cluster_api.md
17+
+++ b/content/operate/kubernetes/reference/redis_enterprise_cluster_api.md
18+
@@ -5,8 +5,9 @@ categories:
19+
- docs
20+
- operate
21+
- kubernetes
22+
-linkTitle: RedisEnterpriseCluster API Reference
23+
+linkTitle: REC API
24+
weight: 30
25+
+aliases: [ /operate/kubernetes/reference/cluster-options, ]
26+
---
27+
28+
Packages:
29+
diff --git a/content/operate/kubernetes/reference/redis_enterprise_database_api.md b/content/operate/kubernetes/reference/redis_enterprise_database_api.md
30+
index f925ce44..ea21766e 100644
31+
--- a/content/operate/kubernetes/reference/redis_enterprise_database_api.md
32+
+++ b/content/operate/kubernetes/reference/redis_enterprise_database_api.md
33+
@@ -5,8 +5,9 @@ categories:
34+
- docs
35+
- operate
36+
- kubernetes
37+
-linkTitle: RedisEnterpriseDatabase API Reference
38+
+linkTitle: REDB API
39+
weight: 30
40+
+aliases: [ /operate/kubernetes/reference/db-options, ]
41+
---
42+
43+
Packages:
44+
diff --git a/content/operate/kubernetes/reference/redis_enterprise_remote_cluster.md b/content/operate/kubernetes/reference/redis_enterprise_remote_cluster.md
45+
index 7d37a6dc..a9a313cf 100644
46+
--- a/content/operate/kubernetes/reference/redis_enterprise_remote_cluster.md
47+
+++ b/content/operate/kubernetes/reference/redis_enterprise_remote_cluster.md
48+
@@ -5,7 +5,7 @@ categories:
49+
- docs
50+
- operate
51+
- kubernetes
52+
-linkTitle: RedisEnterpriseRemoteCluster API Reference
53+
+linkTitle: RERC API
54+
weight: 30
55+
---
56+
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{{- $group:= index .Groups 0 -}}
2+
{{- $kinds:= index $group.Kinds 0 -}}
3+
{{- $resource := $kinds.Name -}}
4+
{{- $title:= printf "%s %s" $kinds.Name "API Reference" -}}
5+
---
6+
title: {{ $title }}
7+
alwaysopen: false
8+
categories:
9+
- docs
10+
- operate
11+
- kubernetes
12+
linkTitle: {{ $title }}
13+
weight: 30
14+
---
15+
16+
Packages:
17+
{{ $group:= index .Groups 0 }}
18+
19+
- [{{$group.Group}}/{{$group.Version}}](#{{ anchorize (printf "%s/%s" $group.Group $group.Version) }})
20+
21+
22+
{{ $group:= index .Groups 0 }}
23+
24+
# {{$group.Group}}/{{$group.Version}}
25+
26+
{{range $group.Kinds}}
27+
{{- $kind := . -}}
28+
{{range .Types}}
29+
30+
{{if not .IsTopLevel}}
31+
### {{.Name}}
32+
{{if .ParentKey}}<sup><sup>[↩ Parent](#{{.ParentKey}})</sup></sup>{{end}}
33+
{{end}}
34+
{{.Description}}
35+
36+
<table>
37+
<thead>
38+
<tr>
39+
<th>Name</th>
40+
<th>Type</th>
41+
<th>Description</th>
42+
<th>Required</th>
43+
</tr>
44+
</thead>
45+
<tbody>
46+
{{- if .IsTopLevel -}}
47+
<tr>
48+
<td><b>apiVersion</b></td>
49+
<td>string</td>
50+
<td>{{$group.Group}}/{{$group.Version}}</td>
51+
<td>true</td>
52+
</tr>
53+
<tr>
54+
<td><b>kind</b></td>
55+
<td>string</td>
56+
<td>{{$kind.Name}}</td>
57+
<td>true</td>
58+
</tr>
59+
<tr>
60+
<td><b><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#objectmeta-v1-meta">metadata</a></b></td>
61+
<td>object</td>
62+
<td>Refer to the Kubernetes API documentation for the fields of the `metadata` field.</td>
63+
<td>true</td>
64+
</tr>
65+
{{- end -}}
66+
{{- range .Fields -}}
67+
<tr>
68+
<td><b>{{if .TypeKey}}<a href="#{{.TypeKey}}">{{.Name}}</a>{{else}}{{.Name}}{{end}}</b></td>
69+
<td>{{.Type}}</td>
70+
<td>
71+
{{.Description}}<br/>
72+
{{- if or .Schema.XValidations .Schema.Format .Schema.Enum .Schema.Default .Schema.Minimum .Schema.Maximum }}
73+
<br/>
74+
{{- end}}
75+
{{- if .Schema.XValidations }}
76+
<i>Validations</i>:
77+
{{- range .Schema.XValidations -}}
78+
<li>{{ .Rule }}: {{ .Message }}</li>
79+
{{- end -}}
80+
{{- end }}
81+
{{- if .Schema.Format }}
82+
<i>Format</i>: {{ .Schema.Format }}<br/>
83+
{{- end }}
84+
{{- if .Schema.Enum }}
85+
<i>Enum</i>: {{ .Schema.Enum | toStrings | join ", " }}<br/>
86+
{{- end }}
87+
{{- if .Schema.Default }}
88+
<i>Default</i>: {{ .Schema.Default }}<br/>
89+
{{- end }}
90+
{{- if .Schema.Minimum }}
91+
<i>Minimum</i>: {{ .Schema.Minimum }}<br/>
92+
{{- end }}
93+
{{- if .Schema.Maximum }}
94+
<i>Maximum</i>: {{ .Schema.Maximum }}<br/>
95+
{{- end }}
96+
</td>
97+
<td>{{.Required}}</td>
98+
</tr>
99+
{{- end -}}
100+
</tbody>
101+
</table>
102+
103+
{{- end}}{{/* range .Types */}}
104+
{{- end}}{{/* range .Kinds */}}

0 commit comments

Comments
 (0)