diff --git a/acceptance/deploy.sh b/acceptance/deploy.sh index c5bb7862..eaa55187 100755 --- a/acceptance/deploy.sh +++ b/acceptance/deploy.sh @@ -83,6 +83,10 @@ if [ "${tool}" == "helm" ]; then flags+=( --set actionsMetricsServer.secret.create=true) flags+=( --set actionsMetricsServer.secret.github_token=${WEBHOOK_GITHUB_TOKEN}) fi + if [ -n "${GITHUB_WEBHOOK_SERVER_ENV_NAME}" ] && [ -n "${GITHUB_WEBHOOK_SERVER_ENV_VALUE}" ]; then + flags+=( --set githubWebhookServer.env[0].name=${GITHUB_WEBHOOK_SERVER_ENV_NAME}) + flags+=( --set githubWebhookServer.env[0].value=${GITHUB_WEBHOOK_SERVER_ENV_VALUE}) + fi set -vx diff --git a/charts/actions-runner-controller/templates/githubwebhook.deployment.yaml b/charts/actions-runner-controller/templates/githubwebhook.deployment.yaml index b119ff1d..d778cba8 100644 --- a/charts/actions-runner-controller/templates/githubwebhook.deployment.yaml +++ b/charts/actions-runner-controller/templates/githubwebhook.deployment.yaml @@ -117,10 +117,14 @@ spec: name: {{ include "actions-runner-controller.secretName" . }} optional: true {{- end }} + {{- if kindIs "slice" .Values.githubWebhookServer.env }} + {{- toYaml .Values.githubWebhookServer.env | nindent 8 }} + {{- else }} {{- range $key, $val := .Values.githubWebhookServer.env }} - name: {{ $key }} value: {{ $val | quote }} {{- end }} + {{- end }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default (cat "v" .Chart.AppVersion | replace " " "") }}" name: github-webhook-server imagePullPolicy: {{ .Values.image.pullPolicy }} diff --git a/charts/actions-runner-controller/values.yaml b/charts/actions-runner-controller/values.yaml index 91dec2be..b5ea7f07 100644 --- a/charts/actions-runner-controller/values.yaml +++ b/charts/actions-runner-controller/values.yaml @@ -279,6 +279,19 @@ githubWebhookServer: # queueLimit: 100 terminationGracePeriodSeconds: 10 lifecycle: {} + # specify additional environment variables for the webhook server pod. + # It's possible to specify either key vale pairs e.g.: + # my_env_var: "some value" + # my_other_env_var: "other value" + + # or a list of complete environment variable definitions e.g.: + # - name: GITHUB_WEBHOOK_SECRET_TOKEN + # valueFrom: + # secretKeyRef: + # key: GITHUB_WEBHOOK_SECRET_TOKEN + # name: prod-gha-controller-webhook-token + # optional: true + env: {} actionsMetrics: serviceAnnotations: {} diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index c8c21270..48e5fc2d 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -101,6 +101,7 @@ func TestE2E(t *testing.T) { label string controller, controllerVer string chart, chartVer string + opt []InstallARCOption }{ { label: "stable", @@ -117,6 +118,12 @@ func TestE2E(t *testing.T) { controllerVer: vars.controllerImageTag, chart: "", chartVer: "", + opt: []InstallARCOption{ + func(ia *InstallARCConfig) { + ia.GithubWebhookServerEnvName = "FOO" + ia.GithubWebhookServerEnvValue = "foo" + }, + }, }, } @@ -186,7 +193,7 @@ func TestE2E(t *testing.T) { for i, v := range testedVersions { t.Run("install actions-runner-controller "+v.label, func(t *testing.T) { t.Logf("Using controller %s:%s and chart %s:%s", v.controller, v.controllerVer, v.chart, v.chartVer) - env.installActionsRunnerController(t, v.controller, v.controllerVer, testID, v.chart, v.chartVer) + env.installActionsRunnerController(t, v.controller, v.controllerVer, testID, v.chart, v.chartVer, v.opt...) }) if t.Failed() { @@ -300,7 +307,7 @@ func TestE2E(t *testing.T) { for i, v := range testedVersions { t.Run("install actions-runner-controller "+v.label, func(t *testing.T) { t.Logf("Using controller %s:%s and chart %s:%s", v.controller, v.controllerVer, v.chart, v.chartVer) - env.installActionsRunnerController(t, v.controller, v.controllerVer, testID, v.chart, v.chartVer) + env.installActionsRunnerController(t, v.controller, v.controllerVer, testID, v.chart, v.chartVer, v.opt...) }) if t.Failed() { @@ -711,9 +718,20 @@ func (e *env) installCertManager(t *testing.T) { e.KubectlWaitUntilDeployAvailable(t, "cert-manager", waitCfg.WithTimeout(60*time.Second)) } -func (e *env) installActionsRunnerController(t *testing.T, repo, tag, testID, chart, chartVer string) { +type InstallARCConfig struct { + GithubWebhookServerEnvName, GithubWebhookServerEnvValue string +} + +type InstallARCOption func(*InstallARCConfig) + +func (e *env) installActionsRunnerController(t *testing.T, repo, tag, testID, chart, chartVer string, opts ...InstallARCOption) { t.Helper() + var c InstallARCConfig + for _, opt := range opts { + opt(&c) + } + e.createControllerNamespaceAndServiceAccount(t) scriptEnv := []string{ @@ -755,6 +773,11 @@ func (e *env) installActionsRunnerController(t *testing.T, repo, tag, testID, ch ) } + varEnv = append(varEnv, + "GITHUB_WEBHOOK_SERVER_ENV_NAME="+c.GithubWebhookServerEnvName, + "GITHUB_WEBHOOK_SERVER_ENV_VALUE="+c.GithubWebhookServerEnvValue, + ) + scriptEnv = append(scriptEnv, varEnv...) scriptEnv = append(scriptEnv, e.vars.commonScriptEnv...)