Unverified Commit 6e856f9e authored by Alexander Rusa's avatar Alexander Rusa
Browse files

feat: add extraEnv to db-migrate and db-initialize

parent 859e4a7c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ spec:
{{- if .Values.application.database_url }}
        - name: DATABASE_URL
          value: {{ .Values.application.database_url | quote }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 8 }}
{{- end }}
        - name: GITLAB_ENVIRONMENT_NAME
          value: {{ .Values.gitlab.envName | quote }}
+3 −0
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ spec:
{{- if .Values.application.database_url }}
        - name: DATABASE_URL
          value: {{ .Values.application.database_url | quote }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 8 }}
{{- end }}
        - name: GITLAB_ENVIRONMENT_NAME
          value: {{ .Values.gitlab.envName | quote }}
+43 −0
Original line number Diff line number Diff line
@@ -276,3 +276,46 @@ func TestInitializeDatabaseTemplateWithExtraEnvFrom(t *testing.T) {
		})
	}
}

func TestInitializeDatabaseTemplateWithExtraEnv(t *testing.T) {
	releaseName := "initialize-application-database-extra-env"
	templates := []string{"templates/db-initialize-job.yaml"}

	tcs := []struct {
		name        string
		values      map[string]string
		expectedEnv coreV1.EnvVar
	}{
		{
			name: "with extra env secret test",
			values: map[string]string{
				"application.initializeCommand": "echo initialize",
				"extraEnv[0].name":  "env-name-test",
				"extraEnv[0].value": "test-value",
			},
			expectedEnv: coreV1.EnvVar{
				Name:  "env-name-test",
				Value: "test-value",
			},
		},
	}

	for _, tc := range tcs {
		t.Run(tc.name, func(t *testing.T) {
			namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId())

			options := &helm.Options{
				SetValues: tc.values,
				KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
			}

			output := mustRenderTemplate(t, options, releaseName, templates, nil)

			var deployments deploymentAppsV1List
			helm.UnmarshalK8SYaml(t, output, &deployments)
			for _, deployment := range deployments.Items {
				require.Contains(t, deployment.Spec.Template.Spec.Containers[0].Env, tc.expectedEnv)
			}
		})
	}
}
+43 −0
Original line number Diff line number Diff line
@@ -276,3 +276,46 @@ func TestMigrateDatabaseTemplateWithExtraEnvFrom(t *testing.T) {
		})
	}
}

func TestMigrateDatabaseTemplateWithExtraEnv(t *testing.T) {
	releaseName := "migrate-application-database-extra-env"
	templates := []string{"templates/db-migrate-hook.yaml"}

	tcs := []struct {
		name        string
		values      map[string]string
		expectedEnv coreV1.EnvVar
	}{
		{
			name: "with extra env secret test",
			values: map[string]string{
				"application.migrateCommand": "echo migrate",
				"extraEnv[0].name":  "env-name-test",
				"extraEnv[0].value": "test-value",
			},
			expectedEnv: coreV1.EnvVar{
				Name:  "env-name-test",
				Value: "test-value",
			},
		},
	}

	for _, tc := range tcs {
		t.Run(tc.name, func(t *testing.T) {
			namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId())

			options := &helm.Options{
				SetValues: tc.values,
				KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
			}

			output := mustRenderTemplate(t, options, releaseName, templates, nil)

			var deployments deploymentAppsV1List
			helm.UnmarshalK8SYaml(t, output, &deployments)
			for _, deployment := range deployments.Items {
				require.Contains(t, deployment.Spec.Template.Spec.Containers[0].Env, tc.expectedEnv)
			}
		})
	}
}