11locals {
2- enabled = module. this . enabled
3- identity_account_name = module. account_map . outputs . identity_account_account_name
4- identity_account_id = module. account_map . outputs . full_account_map [local . identity_account_name ]
5- stack_name = local. enabled ? format (" ${ module . this . tenant != null ? " %[1]s-" : " " } %[2]s-%[3]s" , module. this . tenant , module. this . environment , module. this . stage ) : " "
6- webhook_enabled = local. enabled ? try (var. webhook . enabled , false ) : false
7- webhook_host = local. webhook_enabled ? format (var. webhook . hostname_template , var. tenant , var. stage , var. environment ) : " example.com"
8-
9- default_secrets = local. enabled ? [
2+ enabled = module. this . enabled
3+
4+ webhook_enabled = local. enabled ? try (var. webhook . enabled , false ) : false
5+ webhook_host = local. webhook_enabled ? format (var. webhook . hostname_template , var. tenant , var. stage , var. environment ) : " example.com"
6+
7+ github_app_enabled = length (var. github_app_id ) > 0 && length (var. github_app_installation_id ) > 0
8+ create_secret = local. enabled && length (var. existing_kubernetes_secret_name ) == 0
9+
10+ busy_metrics_filtered = { for runner , runner_config in var . runners : runner => try (runner_config. busy_metrics , null ) == null ? null : {
11+ for k , v in runner_config . busy_metrics : k => v if v != null
12+ } }
13+
14+ default_secrets = local. create_secret ? [
1015 {
11- name = " authSecret.github_token"
12- value = join ( " " , data. aws_ssm_parameter . github_token [0 ] . * . value )
16+ name = local.github_app_enabled ? " authSecret.github_app_private_key " : " authSecret.github_token"
17+ value = one ( data. aws_ssm_parameter . github_token [* ] . value )
1318 type = " string"
1419 }
1520 ] : []
1621
17- webhook_secrets = local. webhook_enabled ? [
22+ webhook_secrets = local. create_secret && local . webhook_enabled ? [
1823 {
1924 name = " githubWebhookServer.secret.github_webhook_secret_token"
20- value = join ( " " , data. aws_ssm_parameter . github_webhook_secret_token [0 ] . * . value )
25+ value = one ( data. aws_ssm_parameter . github_webhook_secret_token [* ] . value )
2126 type = " string"
2227 }
2328 ] : []
@@ -80,39 +85,36 @@ locals {
8085 iam_policy_statements = concat (local. default_iam_policy_statements , local. s3_iam_policy_statements )
8186}
8287
83- data "aws_partition" "current" {
84- count = local. enabled ? 1 : 0
85- }
86-
8788data "aws_ssm_parameter" "github_token" {
88- count = local. enabled ? 1 : 0
89+ count = local. create_secret ? 1 : 0
8990
90- name = var. ssm_github_token_path
91+ name = var. ssm_github_secret_path
9192 with_decryption = true
9293}
9394
9495data "aws_ssm_parameter" "github_webhook_secret_token" {
95- count = local. webhook_enabled ? 1 : 0
96+ count = local. create_secret && local . webhook_enabled ? 1 : 0
9697
9798 name = var. ssm_github_webhook_secret_token_path
9899 with_decryption = true
99100}
100101
101102module "actions_runner_controller" {
102103 source = " cloudposse/helm-release/aws"
103- version = " 0.6 .0"
104+ version = " 0.7 .0"
104105
105- name = " " # avoids hitting length restrictions on IAM Role names
106- chart = var. chart
107- repository = var. chart_repository
108- description = var. chart_description
109- chart_version = var. chart_version
110- kubernetes_namespace = var. kubernetes_namespace
111- create_namespace = var. create_namespace
112- wait = var. wait
113- atomic = var. atomic
114- cleanup_on_fail = var. cleanup_on_fail
115- timeout = var. timeout
106+ name = " " # avoids hitting length restrictions on IAM Role names
107+ chart = var. chart
108+ repository = var. chart_repository
109+ description = var. chart_description
110+ chart_version = var. chart_version
111+ wait = var. wait
112+ atomic = var. atomic
113+ cleanup_on_fail = var. cleanup_on_fail
114+ timeout = var. timeout
115+
116+ kubernetes_namespace = var. kubernetes_namespace
117+ create_namespace_with_kubernetes = var. create_namespace
116118
117119 eks_cluster_oidc_issuer_url = module. eks . outputs . eks_cluster_identity_oidc_issuer
118120
@@ -155,7 +157,23 @@ module "actions_runner_controller" {
155157 },
156158 authSecret = {
157159 enabled = true
158- create = true
160+ create = local.create_secret
161+ }
162+ }),
163+ local . github_app_enabled ? yamlencode ({
164+ authSecret = {
165+ github_app_id = var.github_app_id
166+ github_app_installation_id = var.github_app_installation_id
167+ }
168+ }) : " " ,
169+ local . create_secret ? " " : yamlencode ({
170+ authSecret = {
171+ name = var.existing_kubernetes_secret_name
172+ },
173+ githubWebhookServer = {
174+ secret = {
175+ name = var.existing_kubernetes_secret_name
176+ }
159177 }
160178 }),
161179 # additional values
@@ -171,18 +189,18 @@ module "actions_runner" {
171189 for_each = local. enabled ? var. runners : {}
172190
173191 source = " cloudposse/helm-release/aws"
174- version = " 0.6 .0"
192+ version = " 0.7 .0"
175193
176194 name = each. key
177195 chart = " ${ path . module } /charts/actions-runner"
178196
179197 kubernetes_namespace = var. kubernetes_namespace
180- create_namespace = var . create_namespace
198+ create_namespace = false # will be created by controller above
181199 atomic = var. atomic
182200
183201 eks_cluster_oidc_issuer_url = module. eks . outputs . eks_cluster_identity_oidc_issuer
184202
185- values = [
203+ values = compact ( [
186204 yamlencode ({
187205 release_name = each.key
188206 service_account_name = module.actions_runner_controller.service_account_name
@@ -197,16 +215,11 @@ module "actions_runner" {
197215 scale_down_delay_seconds = each.value.scale_down_delay_seconds
198216 min_replicas = each.value.min_replicas
199217 max_replicas = each.value.max_replicas
200- scale_up_threshold = try (each. value . busy_metrics . scale_up_threshold , null )
201- scale_down_threshold = try (each. value . busy_metrics . scale_down_threshold , null )
202- scale_up_adjustment = try (each. value . busy_metrics . scale_up_adjustment , null )
203- scale_down_adjustment = try (each. value . busy_metrics . scale_down_adjustment , null )
204- scale_up_factor = try (each. value . busy_metrics . scale_up_factor , null )
205- scale_down_factor = try (each. value . busy_metrics . scale_down_factor , null )
206218 webhook_driven_scaling_enabled = each.value.webhook_driven_scaling_enabled
207219 pull_driven_scaling_enabled = each.value.pull_driven_scaling_enabled
208- })
209- ]
220+ }),
221+ local . busy_metrics_filtered [each . key ] == null ? " " : yamlencode (local. busy_metrics_filtered [each . key ]),
222+ ])
210223
211224 depends_on = [module . actions_runner_controller ]
212225}
0 commit comments