Skip to content

Commit 40595d8

Browse files
authored
Add chart-level API to customize internal resources (#4410)
1 parent dc7c858 commit 40595d8

File tree

9 files changed

+386
-1
lines changed

9 files changed

+386
-1
lines changed

charts/gha-runner-scale-set-experimental/templates/_autoscalingrunnerset.tpl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,20 @@ Reserved annotations are excluded from both levels.
2626
{{- end }}
2727
{{- end }}
2828

29+
{{/*
30+
Render a ResourceMeta block for AutoscalingRunnerSet spec fields.
31+
*/}}
32+
{{- define "autoscaling-runner-set.spec-resource-metadata" -}}
33+
{{- with .labels }}
34+
labels:
35+
{{- toYaml . | nindent 2 }}
36+
{{- end }}
37+
{{- with .annotations }}
38+
annotations:
39+
{{- toYaml . | nindent 2 }}
40+
{{- end }}
41+
{{- end }}
42+
2943
{{- define "autoscaling-runner-set.template-service-account" -}}
3044
{{- $runner := (.Values.runner | default dict) -}}
3145
{{- $runnerMode := (index $runner "mode" | default "") -}}

charts/gha-runner-scale-set-experimental/templates/autoscalingrunnserset.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,46 @@ spec:
163163
{{- toYaml . | nindent 4 }}
164164
{{- end }}
165165

166+
{{- with .Values.resource.autoscalingListener.metadata }}
167+
autoscalingListener:
168+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
169+
{{- end }}
170+
171+
{{- with .Values.resource.listenerServiceAccount.metadata }}
172+
listenerServiceAccountMetadata:
173+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
174+
{{- end }}
175+
176+
{{- with .Values.resource.listenerRole.metadata }}
177+
listenerRoleMetadata:
178+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
179+
{{- end }}
180+
181+
{{- with .Values.resource.listenerRoleBinding.metadata }}
182+
listenerRoleBindingMetadata:
183+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
184+
{{- end }}
185+
186+
{{- with .Values.resource.listenerConfigSecret.metadata }}
187+
listenerConfigSecretMetadata:
188+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
189+
{{- end }}
190+
191+
{{- with .Values.resource.ephemeralRunnerSet.metadata }}
192+
ephemeralRunnerSetMetadata:
193+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
194+
{{- end }}
195+
196+
{{- with .Values.resource.ephemeralRunner.metadata }}
197+
ephemeralRunnerMetadata:
198+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
199+
{{- end }}
200+
201+
{{- with .Values.resource.ephemeralRunnerConfigSecret.metadata }}
202+
ephemeralRunnerConfigSecretMetadata:
203+
{{- include "autoscaling-runner-set.spec-resource-metadata" . | nindent 4 }}
204+
{{- end }}
205+
166206
template:
167207
{{- $runnerPodLabels := (include "autoscaling-runner-set.runner-pod.labels" .) -}}
168208
{{- $runnerPodAnnotations := (include "autoscaling-runner-set.runner-pod.annotations" .) -}}

charts/gha-runner-scale-set-experimental/tests/autoscaling_runner_set_annotations_test.yaml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,73 @@ tests:
7777
value: "user-value"
7878
- notExists:
7979
path: metadata.annotations["actions.github.com/cleanup-something"]
80+
81+
- it: should render internal resource metadata annotations in autoscaling runner set spec
82+
set:
83+
scaleset.name: "test"
84+
auth.url: "https://github.com/org"
85+
auth.githubToken: "gh_token12345"
86+
controllerServiceAccount.name: "arc"
87+
controllerServiceAccount.namespace: "arc-system"
88+
resource:
89+
autoscalingListener:
90+
metadata:
91+
annotations:
92+
listener: "true"
93+
listenerServiceAccount:
94+
metadata:
95+
annotations:
96+
service-account: "true"
97+
listenerRole:
98+
metadata:
99+
annotations:
100+
role: "true"
101+
listenerRoleBinding:
102+
metadata:
103+
annotations:
104+
role-binding: "true"
105+
listenerConfigSecret:
106+
metadata:
107+
annotations:
108+
config-secret: "true"
109+
ephemeralRunnerSet:
110+
metadata:
111+
annotations:
112+
runner-set: "true"
113+
ephemeralRunner:
114+
metadata:
115+
annotations:
116+
runner: "true"
117+
ephemeralRunnerConfigSecret:
118+
metadata:
119+
annotations:
120+
runner-secret: "true"
121+
release:
122+
name: "test-name"
123+
namespace: "test-namespace"
124+
asserts:
125+
- equal:
126+
path: spec.autoscalingListener.annotations.listener
127+
value: "true"
128+
- equal:
129+
path: spec.listenerServiceAccountMetadata.annotations.service-account
130+
value: "true"
131+
- equal:
132+
path: spec.listenerRoleMetadata.annotations.role
133+
value: "true"
134+
- equal:
135+
path: spec.listenerRoleBindingMetadata.annotations.role-binding
136+
value: "true"
137+
- equal:
138+
path: spec.listenerConfigSecretMetadata.annotations.config-secret
139+
value: "true"
140+
- equal:
141+
path: spec.ephemeralRunnerSetMetadata.annotations.runner-set
142+
value: "true"
143+
- equal:
144+
path: spec.ephemeralRunnerMetadata.annotations.runner
145+
value: "true"
146+
- equal:
147+
path: spec.ephemeralRunnerConfigSecretMetadata.annotations.runner-secret
148+
value: "true"
149+

charts/gha-runner-scale-set-experimental/tests/autoscaling_runner_set_labels_test.yaml

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,4 +290,73 @@ tests:
290290
path: metadata.labels["actions.github.com/global-custom"]
291291
- equal:
292292
path: metadata.labels["actions.github.com/scale-set-name"]
293-
value: "test-name"
293+
value: "test-name"
294+
295+
- it: should render internal resource metadata labels in autoscaling runner set spec
296+
set:
297+
scaleset.name: "test"
298+
auth.url: "https://github.com/org"
299+
auth.githubToken: "gh_token12345"
300+
controllerServiceAccount.name: "arc"
301+
controllerServiceAccount.namespace: "arc-system"
302+
resource:
303+
autoscalingListener:
304+
metadata:
305+
labels:
306+
listener: "true"
307+
listenerServiceAccount:
308+
metadata:
309+
labels:
310+
service-account: "true"
311+
listenerRole:
312+
metadata:
313+
labels:
314+
role: "true"
315+
listenerRoleBinding:
316+
metadata:
317+
labels:
318+
role-binding: "true"
319+
listenerConfigSecret:
320+
metadata:
321+
labels:
322+
config-secret: "true"
323+
ephemeralRunnerSet:
324+
metadata:
325+
labels:
326+
runner-set: "true"
327+
ephemeralRunner:
328+
metadata:
329+
labels:
330+
runner: "true"
331+
ephemeralRunnerConfigSecret:
332+
metadata:
333+
labels:
334+
runner-secret: "true"
335+
release:
336+
name: "test-name"
337+
namespace: "test-namespace"
338+
asserts:
339+
- equal:
340+
path: spec.autoscalingListener.labels.listener
341+
value: "true"
342+
- equal:
343+
path: spec.listenerServiceAccountMetadata.labels.service-account
344+
value: "true"
345+
- equal:
346+
path: spec.listenerRoleMetadata.labels.role
347+
value: "true"
348+
- equal:
349+
path: spec.listenerRoleBindingMetadata.labels.role-binding
350+
value: "true"
351+
- equal:
352+
path: spec.listenerConfigSecretMetadata.labels.config-secret
353+
value: "true"
354+
- equal:
355+
path: spec.ephemeralRunnerSetMetadata.labels.runner-set
356+
value: "true"
357+
- equal:
358+
path: spec.ephemeralRunnerMetadata.labels.runner
359+
value: "true"
360+
- equal:
361+
path: spec.ephemeralRunnerConfigSecretMetadata.labels.runner-secret
362+
value: "true"

charts/gha-runner-scale-set-experimental/values.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,55 @@ resource:
103103
labels: {}
104104
annotations: {}
105105

106+
# Specifies metadata that will be applied to the AutoscalingListener resource
107+
# created by the AutoscalingRunnerSet controller.
108+
autoscalingListener:
109+
metadata:
110+
labels: {}
111+
annotations: {}
112+
113+
# Specifies metadata that will be applied to the listener ServiceAccount.
114+
listenerServiceAccount:
115+
metadata:
116+
labels: {}
117+
annotations: {}
118+
119+
# Specifies metadata that will be applied to the listener Role.
120+
listenerRole:
121+
metadata:
122+
labels: {}
123+
annotations: {}
124+
125+
# Specifies metadata that will be applied to the listener RoleBinding.
126+
listenerRoleBinding:
127+
metadata:
128+
labels: {}
129+
annotations: {}
130+
131+
# Specifies metadata that will be applied to the listener config Secret.
132+
listenerConfigSecret:
133+
metadata:
134+
labels: {}
135+
annotations: {}
136+
137+
# Specifies metadata that will be applied to the EphemeralRunnerSet resource.
138+
ephemeralRunnerSet:
139+
metadata:
140+
labels: {}
141+
annotations: {}
142+
143+
# Specifies metadata that will be applied to the EphemeralRunner resource.
144+
ephemeralRunner:
145+
metadata:
146+
labels: {}
147+
annotations: {}
148+
149+
# Specifies metadata that will be applied to the EphemeralRunner config Secret.
150+
ephemeralRunnerConfigSecret:
151+
metadata:
152+
labels: {}
153+
annotations: {}
154+
106155
# Specifies metadata that will be applied to the manager Role resource
107156
managerRole:
108157
metadata:

charts/gha-runner-scale-set/templates/_helpers.tpl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ app.kubernetes.io/name: {{ include "gha-runner-scale-set.scale-set-name" . }}
5454
app.kubernetes.io/instance: {{ include "gha-runner-scale-set.scale-set-name" . }}
5555
{{- end }}
5656

57+
{{/*
58+
Render a ResourceMeta block for AutoscalingRunnerSet spec fields.
59+
*/}}
60+
{{- define "gha-runner-scale-set.resourceMetaSpec" -}}
61+
{{- with .labels }}
62+
labels:
63+
{{- toYaml . | nindent 2 }}
64+
{{- end }}
65+
{{- with .annotations }}
66+
annotations:
67+
{{- toYaml . | nindent 2 }}
68+
{{- end }}
69+
{{- end }}
70+
5771
{{- define "gha-runner-scale-set.githubsecret" -}}
5872
{{- if kindIs "string" .Values.githubConfigSecret }}
5973
{{- if not (empty .Values.githubConfigSecret) }}

charts/gha-runner-scale-set/templates/autoscalingrunnerset.yaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{- $resourceMeta := default (dict) .Values.resourceMeta }}
12
{{- $hasCustomResourceMeta := (and .Values.resourceMeta .Values.resourceMeta.autoscalingRunnerSet) }}
23
apiVersion: actions.github.com/v1alpha1
34
kind: AutoscalingRunnerSet
@@ -154,6 +155,46 @@ spec:
154155
{{- toYaml . | nindent 4 }}
155156
{{- end }}
156157

158+
{{- with (index $resourceMeta "autoscalingListener") }}
159+
autoscalingListener:
160+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
161+
{{- end }}
162+
163+
{{- with (index $resourceMeta "listenerServiceAccount") }}
164+
listenerServiceAccountMetadata:
165+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
166+
{{- end }}
167+
168+
{{- with (index $resourceMeta "listenerRole") }}
169+
listenerRoleMetadata:
170+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
171+
{{- end }}
172+
173+
{{- with (index $resourceMeta "listenerRoleBinding") }}
174+
listenerRoleBindingMetadata:
175+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
176+
{{- end }}
177+
178+
{{- with (index $resourceMeta "listenerConfigSecret") }}
179+
listenerConfigSecretMetadata:
180+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
181+
{{- end }}
182+
183+
{{- with (index $resourceMeta "ephemeralRunnerSet") }}
184+
ephemeralRunnerSetMetadata:
185+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
186+
{{- end }}
187+
188+
{{- with (index $resourceMeta "ephemeralRunner") }}
189+
ephemeralRunnerMetadata:
190+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
191+
{{- end }}
192+
193+
{{- with (index $resourceMeta "ephemeralRunnerConfigSecret") }}
194+
ephemeralRunnerConfigSecretMetadata:
195+
{{- include "gha-runner-scale-set.resourceMetaSpec" . | nindent 4 }}
196+
{{- end }}
197+
157198
template:
158199
{{- with .Values.template.metadata }}
159200
metadata:

0 commit comments

Comments
 (0)