@@ -196,40 +196,82 @@ function auto_database_uri() {
196196 esac
197197}
198198
199- function install_postgresql () {
199+ function install_app () {
200200
201- local name=" $POSTGRESQL_RELEASE_NAME "
201+ local name=" ${ ! 2} "
202202
203203 local debug_flag=()
204204 if [[ -n " $AUTO_DEVOPS_DEPLOY_DEBUG " ]]; then
205205 debug_flag=(' --debug' )
206206 fi
207207
208- local postgresql_helm_values_args=()
209- local postgresql_helm_values_file=${POSTGRESQL_HELM_UPGRADE_VALUES_FILE:- .gitlab/ auto-deploy-postgresql-values.yaml}
210- if [[ -f " ${postgresql_helm_values_file} " ]]; then
211- echo " Using PostgreSQL helm values file ${postgresql_helm_values_file@ Q} "
212- postgresql_helm_values_args=(--values " ${postgresql_helm_values_file} " )
213- else
214- echo " No PostgreSQL helm values file found at ${postgresql_helm_values_file@ Q} "
208+ if [[ " ${MARIADB_ENABLED} " == " true" ]]; then
209+
210+ yq eval --null-input ' .auth.database= env(MARIADB_DB)' > mariadb-specific-values.yaml
211+ yq eval ' .auth.username = env(MARIADB_USER)' -i mariadb-specific-values.yaml
212+ yq eval ' .auth.password = env(MARIADB_PASSWORD)' -i mariadb-specific-values.yaml
213+ yq eval ' .auth.rootPassword = env(MARIADB_ROOT_PASSWORD)' -i mariadb-specific-values.yaml
214+
215+ # metrics.enabled: true
216+ # rbac.create=true
217+ # architecture: replication
218+ # secondary.replicaCount: 2
219+ # auth.forcePassword: true
220+ # auth.usePasswordFiles: true
221+ fi
222+ if [[ " ${MYSQL_ENABLED} " == " true" ]]; then
223+ yq eval --null-input ' .auth.database= env(MYSQL_DB)' > mysql-specific-values.yaml
224+ yq eval ' .auth.username = env(MYSQL_USER)' -i mysql-specific-values.yaml
225+ yq eval ' .auth.password = env(MYSQL_PASSWORD)' -i mysql-specific-values.yaml
226+ yq eval ' .auth.rootPassword = env(MYSQL_ROOT_PASSWORD)' -i mysql-specific-values.yaml
215227 fi
216228
217- # shellcheck disable=SC2086 # POSTGRESQL_HELM_UPGRADE_EXTRA_ARGS -- double quote variables to prevent globbing
218- helm upgrade --install \
219- --atomic \
220- " ${debug_flag[@]} " \
221- --wait \
222- --version " ${POSTGRESQL_CHART_VERSION} " \
223- --set fullnameOverride=" $name " \
224- --set postgresqlUsername=" $POSTGRESQL_USER " \
225- --set postgresqlPassword=" $POSTGRESQL_PASSWORD " \
226- --set postgresqlDatabase=" $POSTGRESQL_DB " \
227- --set image.tag=" $POSTGRESQL_VERSION " \
228- " ${postgresql_helm_values_args[@]} " \
229- $POSTGRESQL_HELM_UPGRADE_EXTRA_ARGS \
230- --namespace=" ${KUBE_NAMESPACE} " \
231- " $name " \
232- bitnami/postgresql
229+ if [[ " ${POSTGRESQL_ENABLED} " == " true" ]]; then
230+
231+ yq eval --null-input ' .postgresqlDatabase = env(POSTGRESQL_DB)' > postgresql-specific-values.yaml
232+ yq eval ' .postgresqlUsername = env(POSTGRESQL_USER)' -i postgresql-specific-values.yaml
233+ yq eval ' .postgresqlPassword = env(POSTGRESQL_PASSWORD)' -i postgresql-specific-values.yaml
234+ yq eval ' .postgresqlPostgresPassword = env(POSTGRESQL_ROOT_PASSWORD)' -i postgresql-specific-values.yaml
235+
236+ # metrics.enabled
237+ # rbac.create
238+ # replication.enabled: true
239+ # replication.readReplicas: 2
240+ # replication.synchronousCommit: "on"
241+ # replication.numSynchronousReplicas: 1
242+ # usePasswordFile
243+ fi
244+
245+ # shellcheck disable=SC1090
246+ source <(
247+ cat << EOF
248+ local ${i} _helm_values_args=()
249+ local ${i} _helm_values_file=\$ {${i^^} _HELM_UPGRADE_VALUES_FILE:-.gitlab/auto-deploy-${i} -values.yaml}
250+ if [[ -f "\$ {${i} _helm_values_file}" ]]; then
251+ echo "Using ${i^^} helm values file \$ {${i} _helm_values_file@Q}"
252+ ${i} _helm_values_args=(--values "\$ {${i} _helm_values_file}")
253+ else
254+ echo "No ${i^^} helm values file found at \$ {${i} _helm_values_file@Q}"
255+ fi
256+
257+ # shellcheck disable=SC2086 # POSTGRESQL_HELM_UPGRADE_EXTRA_ARGS -- double quote variables to prevent globbing
258+ helm upgrade --install \
259+ --atomic \
260+ "\$ {debug_flag[@]}" \
261+ --wait \
262+ --version "\$ {${i^^} _CHART_VERSION}" \
263+ --set fullnameOverride="$name " \
264+ --set ${i} Username="\$ {${i^^} _USER}" \
265+ --set ${i} Password="\$ {${i^^} _PASSWORD}" \
266+ --set ${i} Database="\$ {${i^^} _DB}" \
267+ --set image.tag="\$ {${i^^} _VERSION}" \
268+ "\$ {${i} _helm_values_args[@]}" \
269+ \$ {${i^^} _HELM_UPGRADE_EXTRA_ARGS} \
270+ --namespace="${KUBE_NAMESPACE} " \
271+ "$name " \
272+ "bitnami/${i} "
273+ EOF
274+ )
233275}
234276
235277# shellcheck disable=SC2153 # warns that my_var vs MY_VAR is a possible misspelling
@@ -244,9 +286,17 @@ function deploy() {
244286 local stable_name
245287 stable_name=$( deploy_name stable)
246288
247- if [[ " $POSTGRESQL_ENABLED " == " true" ]]; then
248- install_postgresql
249- fi
289+ for i in " ${APPS[@]} " ; do
290+
291+ # shellcheck disable=SC1090
292+ source <(
293+ cat << EOF
294+ if [[ "\$ {${i^^} _ENABLED}" == "true" ]]; then
295+ install_app "${i} " "${i^^} _RELEASE_NAME"
296+ fi
297+ EOF
298+ )
299+ done
250300
251301 validate-chart-version " $( helm list --namespace " ${KUBE_NAMESPACE} " --output json) " " chart" " $name "
252302
@@ -411,12 +461,12 @@ function scale() {
411461 fi
412462}
413463
414- function delete_postgresql () {
415- local name=" $POSTGRESQL_RELEASE_NAME "
464+ function delete_app () {
465+ local name=" ${ ! 2} "
416466
417- if [[ -n " $( helm ls --namespace " ${KUBE_NAMESPACE} " -q -f " ^$name $" ) " ]]; then
418- helm delete " $name " --namespace " ${KUBE_NAMESPACE} "
419- kubectl delete pvc -n " ${KUBE_NAMESPACE} " -l " release=$POSTGRESQL_RELEASE_NAME "
467+ if [[ -n " $( helm ls --namespace " ${KUBE_NAMESPACE} " -q -f " ^${ name} $" ) " ]]; then
468+ helm delete " ${ name} " --namespace " ${KUBE_NAMESPACE} "
469+ kubectl delete pvc -n " ${KUBE_NAMESPACE} " -l " release=${name} "
420470 fi
421471}
422472
@@ -430,9 +480,13 @@ function delete() {
430480 helm delete " $name " --namespace " ${KUBE_NAMESPACE} "
431481 fi
432482
433- if [[ " $track " == " stable" ]]; then
434- delete_postgresql
435- fi
483+ for i in " ${APPS[@]} " ; do
484+
485+ if [[ " $track " == " stable" ]]; then
486+ delete_app " ${i} " " ${i^^} _RELEASE_NAME"
487+ fi
488+
489+ done
436490
437491 local secret_name
438492 secret_name=$( application_secret_name " $track " )
@@ -536,7 +590,7 @@ ensure_namespace) ensure_namespace ;;
536590create_secret) create_secret ;;
537591persist_environment_url) persist_environment_url ;;
538592auto_database_uri) auto_database_uri ;;
539- install_postgresql) install_postgresql " ${@: 2} " ;;
593+ install_app) install_app " ${@: 2} " ;;
540594deploy) deploy " ${@: 2} " ;;
541595scale) scale " ${@: 2} " ;;
542596delete) delete " ${@: 2} " ;;
0 commit comments