@@ -44,6 +44,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", Ordered, func() {
44
44
var mgr ctrl.Manager
45
45
var controller * AutoscalingRunnerSetReconciler
46
46
var autoscalingNS * corev1.Namespace
47
+ var controllerNS * corev1.Namespace
47
48
var autoscalingRunnerSet * v1alpha1.AutoscalingRunnerSet
48
49
var configSecret * corev1.Secret
49
50
@@ -61,7 +62,11 @@ var _ = Describe("Test AutoScalingRunnerSet controller", Ordered, func() {
61
62
62
63
BeforeEach (func () {
63
64
ctx = context .Background ()
64
- autoscalingNS , mgr = createNamespace (GinkgoT (), k8sClient )
65
+ var namespaces []* corev1.Namespace
66
+ namespaces , mgr = createNamespaces (GinkgoT (), 2 )
67
+ autoscalingNS = namespaces [0 ]
68
+ controllerNS = namespaces [1 ]
69
+
65
70
configSecret = createDefaultSecret (GinkgoT (), k8sClient , autoscalingNS .Name )
66
71
67
72
controller = & AutoscalingRunnerSetReconciler {
@@ -77,32 +82,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", Ordered, func() {
77
82
78
83
min := 1
79
84
max := 10
80
- autoscalingRunnerSet = & v1alpha1.AutoscalingRunnerSet {
81
- ObjectMeta : metav1.ObjectMeta {
82
- Name : "test-asrs" ,
83
- Namespace : autoscalingNS .Name ,
84
- Labels : map [string ]string {
85
- LabelKeyKubernetesVersion : buildVersion ,
86
- },
87
- },
88
- Spec : v1alpha1.AutoscalingRunnerSetSpec {
89
- GitHubConfigUrl : "https://github.com/owner/repo" ,
90
- GitHubConfigSecret : configSecret .Name ,
91
- MaxRunners : & max ,
92
- MinRunners : & min ,
93
- RunnerGroup : "testgroup" ,
94
- Template : corev1.PodTemplateSpec {
95
- Spec : corev1.PodSpec {
96
- Containers : []corev1.Container {
97
- {
98
- Name : "runner" ,
99
- Image : "ghcr.io/actions/runner" ,
100
- },
101
- },
102
- },
103
- },
104
- },
105
- }
85
+ autoscalingRunnerSet = createAutoscalingRunnerSet ("test-asrs" , autoscalingNS , buildVersion , configSecret .Name , min , max )
106
86
107
87
err = k8sClient .Create (ctx , autoscalingRunnerSet )
108
88
Expect (err ).NotTo (HaveOccurred (), "failed to create AutoScalingRunnerSet" )
@@ -197,6 +177,46 @@ var _ = Describe("Test AutoScalingRunnerSet controller", Ordered, func() {
197
177
Expect (err ).NotTo (HaveOccurred (), "failed to list EphemeralRunnerSet" )
198
178
Expect (len (runnerSetList .Items )).To (BeEquivalentTo (1 ), "Only one EphemeralRunnerSet should be created" )
199
179
})
180
+
181
+ It ("It should read GitHub config secret from controller namespace if ReadGitHubConfigSecretFromControllerNamespace is enabled" , func () {
182
+ err := k8sClient .Delete (ctx , & corev1.Secret {ObjectMeta : metav1.ObjectMeta {Name : configSecret .Name , Namespace : autoscalingNS .Name }})
183
+ Expect (err ).ToNot (HaveOccurred (), "failed to delete github-config-secret" )
184
+
185
+ controller2 := controller
186
+ controller2 .ReadGitHubConfigSecretFromControllerNamespace = true
187
+ controller2 .ControllerNamespace = controllerNS .Name
188
+
189
+ err = controller2 .SetupWithManager (mgr )
190
+ Expect (err ).NotTo (HaveOccurred (), "failed to setup controller" )
191
+
192
+ controllerNamespaceConfigSecret := createDefaultSecret (GinkgoT (), k8sClient , controller2 .ControllerNamespace )
193
+ runner := createAutoscalingRunnerSet ("secret-test-asrs" , autoscalingNS , buildVersion , controllerNamespaceConfigSecret .Name , 0 , 1 )
194
+ err = k8sClient .Create (ctx , runner )
195
+ Expect (err ).NotTo (HaveOccurred (), "failed to create AutoscalingRunnerSet" )
196
+
197
+ created := new (v1alpha1.AutoscalingRunnerSet )
198
+ // Check if runner scale set is created on service
199
+ Eventually (
200
+ func () (string , error ) {
201
+ err := k8sClient .Get (ctx , client.ObjectKey {Name : runner .Name , Namespace : autoscalingRunnerSet .Namespace }, created )
202
+ if err != nil {
203
+ return "" , err
204
+ }
205
+
206
+ if _ , ok := created .Annotations [runnerScaleSetIdAnnotationKey ]; ! ok {
207
+ return "" , nil
208
+ }
209
+
210
+ if _ , ok := created .Annotations [AnnotationKeyGitHubRunnerGroupName ]; ! ok {
211
+ return "" , nil
212
+ }
213
+
214
+ return fmt .Sprintf ("%s_%s" , created .Annotations [runnerScaleSetIdAnnotationKey ], created .Annotations [AnnotationKeyGitHubRunnerGroupName ]), nil
215
+ },
216
+ autoscalingRunnerSetTestTimeout ,
217
+ autoscalingRunnerSetTestInterval ).Should (BeEquivalentTo ("1_testgroup" ), "RunnerScaleSet should be created/fetched and update the AutoScalingRunnerSet's annotation" )
218
+
219
+ })
200
220
})
201
221
202
222
Context ("When deleting a new AutoScalingRunnerSet" , func () {
@@ -1790,3 +1810,32 @@ var _ = Describe("Test resource version and build version mismatch", func() {
1790
1810
).Should (BeTrue ())
1791
1811
})
1792
1812
})
1813
+
1814
+ func createAutoscalingRunnerSet (name string , ns * corev1.Namespace , buildVersion string , secretName string , min , max int ) * v1alpha1.AutoscalingRunnerSet {
1815
+ return & v1alpha1.AutoscalingRunnerSet {
1816
+ ObjectMeta : metav1.ObjectMeta {
1817
+ Name : name ,
1818
+ Namespace : ns .Name ,
1819
+ Labels : map [string ]string {
1820
+ LabelKeyKubernetesVersion : buildVersion ,
1821
+ },
1822
+ },
1823
+ Spec : v1alpha1.AutoscalingRunnerSetSpec {
1824
+ GitHubConfigUrl : "https://github.com/owner/repo" ,
1825
+ GitHubConfigSecret : secretName ,
1826
+ MaxRunners : & max ,
1827
+ MinRunners : & min ,
1828
+ RunnerGroup : "testgroup" ,
1829
+ Template : corev1.PodTemplateSpec {
1830
+ Spec : corev1.PodSpec {
1831
+ Containers : []corev1.Container {
1832
+ {
1833
+ Name : "runner" ,
1834
+ Image : "ghcr.io/actions/runner" ,
1835
+ },
1836
+ },
1837
+ },
1838
+ },
1839
+ },
1840
+ }
1841
+ }
0 commit comments