@@ -243,34 +243,33 @@ touch /tmp/warnings
243243# #############################################
244244
245245buildStartTime=" $( date +" %Y-%m-%d %H:%M:%S" ) "
246-
247- # @TODO: uncomment when collector is introduced
248- # beginBuildStep "Initial Environment Collection" "collectEnvironment"
246+ beginBuildStep " Initial Environment Collection" " collectEnvironment"
249247
250248# #############################################
251249# ## COLLECT INFORMATION
252250# #############################################
251+
252+ echo " Collecting information about the environment"
253+
253254# run the collector
254- # @TODO: uncomment when collector is introduced
255- # @TODO: don't run the collector yet, leave this as placeholder to prevent possible introduction of issues
256- # ENVIRONMENT_DATA=$(build-deploy-tool collect environment)
257- # echo "$ENVIRONMENT_DATA" | jq -r '.deployments.items[]?.name'
258- # echo "$ENVIRONMENT_DATA" | jq -r '.cronjobs.items[]?.name'
259- # echo "$ENVIRONMENT_DATA" | jq -r '.ingress.items[]?.name'
260- # echo "$ENVIRONMENT_DATA" | jq -r '.services.items[]?.name'
261- # echo "$ENVIRONMENT_DATA" | jq -r '.secrets.items[]?.name'
262- # echo "$ENVIRONMENT_DATA" | jq -r '.pvcs.items[]?.name'
263- # echo "$ENVIRONMENT_DATA" | jq -r '.schedulesv1.items[]?.name'
264- # echo "$ENVIRONMENT_DATA" | jq -r '.schedulesv1alpha1.items[]?.name'
265- # echo "$ENVIRONMENT_DATA" | jq -r '.prebackuppodsv1.items[]?.name'
266- # echo "$ENVIRONMENT_DATA" | jq -r '.prebackuppodsv1alpha1.items[]?.name'
267- # echo "$ENVIRONMENT_DATA" | jq -r '.mariadbconsumers.items[]?.name'
268- # echo "$ENVIRONMENT_DATA" | jq -r '.mongodbconsumers.items[]?.name'
269- # echo "$ENVIRONMENT_DATA" | jq -r '.postgresqlconsumers.items[]?.name'
255+ ENVIRONMENT_DATA=$( build-deploy-tool collect environment)
256+
257+ LAGOON_VARIABLES_ONLY=$( buildEnvVarCheck LAGOON_VARIABLES_ONLY " false" )
258+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
259+ # do some checks to ensure safety and fail build if required
260+ if kubectl -n ${NAMESPACE} get configmap lagoon-env & > /dev/null; then
261+ # if the environment has a `lagoon-env` configmap present, fail this variable only deployment
262+ # if the configmap is still present, there are other changes required that only a full deployment can achieve
263+ echo " This environment currently doesn't support environment variable only deployments"
264+ echo " You will need to run a full deployment to ensure the environment is up to date"
265+ exit 1
266+ fi
267+ fi
270268
271269currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
272- # @TODO: uncomment when collector is introduced
273- # finalizeBuildStep "${buildStartTime}" "${buildStartTime}" "${currentStepEnd}" "${NAMESPACE}" "collectEnvironment" "Initial Environment Collection" "false"
270+ finalizeBuildStep " ${buildStartTime} " " ${buildStartTime} " " ${currentStepEnd} " " ${NAMESPACE} " " collectEnvironment" " Initial Environment Collection" " false"
271+
272+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
274273previousStepEnd=${currentStepEnd}
275274beginBuildStep " Initial Environment Setup" " initialSetup"
276275echo " STEP: Preparation started ${previousStepEnd} "
@@ -313,7 +312,7 @@ if kubectl -n ${NAMESPACE} get configmap lagoon-yaml &> /dev/null; then
313312 # if the key does exist, then nuke it and put the new key
314313 kubectl -n ${NAMESPACE} create configmap lagoon-yaml --from-file=pre-deploy=.lagoon.yml -o yaml --dry-run=client | kubectl replace -f -
315314 fi
316- else
315+ else
317316 # create it
318317 kubectl -n ${NAMESPACE} create configmap lagoon-yaml --from-file=pre-deploy=.lagoon.yml
319318fi
@@ -384,7 +383,7 @@ if kubectl -n ${NAMESPACE} get configmap docker-compose-yaml &> /dev/null; then
384383 # if the key does exist, then nuke it and put the new key
385384 kubectl -n ${NAMESPACE} create configmap docker-compose-yaml --from-file=pre-deploy=" ${DOCKER_COMPOSE_YAML} " -o yaml --dry-run=client | kubectl replace -f -
386385 fi
387- else
386+ else
388387 # create it
389388 kubectl -n ${NAMESPACE} create configmap docker-compose-yaml --from-file=pre-deploy=" ${DOCKER_COMPOSE_YAML} "
390389fi
@@ -902,6 +901,7 @@ if [[ "$BUILD_TYPE" == "promote" ]]; then
902901 echo " No images built for promote environments"
903902fi
904903
904+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
905905# #############################################
906906# ## PUSH IMAGES TO REGISTRY
907907# #############################################
@@ -1031,6 +1031,7 @@ if [ "${DEPRECATED_IMAGE_WARNINGS}" == "true" ]; then
10311031 finalizeBuildStep " ${buildStartTime} " " ${previousStepEnd} " " ${currentStepEnd} " " ${NAMESPACE} " " deprecatedImagesComplete" " Deprecated Image Warnings" " true"
10321032fi
10331033
1034+ fi
10341035# set that the image build and push phase has ended
10351036IMAGE_BUILD_PUSH_COMPLETE=" true"
10361037
13341335# Get list of autogenerated routes
13351336AUTOGENERATED_ROUTES=$( kubectl -n ${NAMESPACE} get ingress --sort-by=' {.metadata.name}' -l " lagoon.sh/autogenerated=true" -o=go-template --template=' {{range $indexItems, $ingress := .items}}{{if $indexItems}},{{end}}{{$tls := .spec.tls}}{{range $indexRule, $rule := .spec.rules}}{{if $indexRule}},{{end}}{{if $tls}}https://{{else}}http://{{end}}{{.host}}{{end}}{{end}}' )
13361337
1338+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
13371339# loop through created DBAAS templates
13381340DBAAS=($( build-deploy-tool identify dbaas) )
13391341for DBAAS_ENTRY in " ${DBAAS[@]} "
@@ -1354,43 +1356,63 @@ do
13541356 unset IMAGES_PULL[$SERVICE_NAME ]
13551357 CONSUMER_TYPE=" mariadbconsumer"
13561358 . /kubectl-build-deploy/scripts/exec-kubectl-dbaas-wait.sh
1357- MARIADB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mariadbconsumer/${SERVICE_NAME} -o json | jq -r ' .spec | @base64' )
1359+ MARIADB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mariadbconsumer/${SERVICE_NAME} -o json | jq -r ' . | @base64' )
13581360 ;;
13591361
13601362 postgres-dbaas)
13611363 # remove the image from images to pull
13621364 unset IMAGES_PULL[$SERVICE_NAME ]
13631365 CONSUMER_TYPE=" postgresqlconsumer"
13641366 . /kubectl-build-deploy/scripts/exec-kubectl-dbaas-wait.sh
1365- POSTGRES_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get postgresqlconsumer/${SERVICE_NAME} -o json | jq -r ' .spec | @base64' )
1367+ POSTGRES_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get postgresqlconsumer/${SERVICE_NAME} -o json | jq -r ' . | @base64' )
13661368 ;;
13671369
13681370 mongodb-dbaas)
13691371 # remove the image from images to pull
13701372 unset IMAGES_PULL[$SERVICE_NAME ]
13711373 CONSUMER_TYPE=" mongodbconsumer"
13721374 . /kubectl-build-deploy/scripts/exec-kubectl-dbaas-wait.sh
1373- MONGODB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mongodbconsumer/${SERVICE_NAME} -o json | jq -r ' .spec | @base64' )
1375+ MONGODB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mongodbconsumer/${SERVICE_NAME} -o json | jq -r ' . | @base64' )
13741376 ;;
13751377
13761378 * )
13771379 echo " DBAAS Type ${SERVICE_TYPE} not implemented" ; exit 1;
13781380
13791381 esac
13801382done
1383+ else
1384+ # variable only deployment
1385+ MARIADB_DBAAS_CONSUMERS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .mariadbconsumers.items[]? | @base64' )
1386+ for MARIADB_DBAAS_CONSUMER in ${MARIADB_DBAAS_CONSUMERS} ; do
1387+ SERVICE_NAME=$( echo ${MARIADB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1388+ MARIADB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( echo ${MARIADB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | . | @base64' )
1389+ done
1390+ MONGODB_DBAAS_CONSUMERS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .mongodbconsumers.items[]? | @base64' )
1391+ for MONGODB_DBAAS_CONSUMER in ${MONGODB_DBAAS_CONSUMERS} ; do
1392+ SERVICE_NAME=$( echo ${MONGODB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1393+ MONGODB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( echo ${MONGODB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | . | @base64' )
1394+ done
1395+ POSTGRES_DBAAS_CONSUMERS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .postgresqlconsumers.items[]? | @base64' )
1396+ for POSTGRES_DBAAS_CONSUMER in ${POSTGRES_DBAAS_CONSUMERS} ; do
1397+ SERVICE_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1398+ POSTGRES_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( echo ${POSTGRES_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | . | @base64' )
1399+ done
1400+ # variable only deployment
1401+ fi
13811402
13821403# convert specs into credential dump for ingestion by build-deploy-tool
13831404DBAAS_VARIABLES=" []"
13841405for SERVICE_NAME in " ${! MARIADB_DBAAS_CONSUMER_SPECS[@]} "
13851406do
1407+ SERVICE_NAME=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .metadata.name' )
13861408 SERVICE_NAME_UPPERCASE=$( echo " $SERVICE_NAME " | tr ' [:lower:]' ' [:upper:]' | tr ' -' ' _' )
1387- DB_HOST=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.primary' )
1388- DB_USER=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.username' )
1389- DB_PASSWORD=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.password' )
1390- DB_NAME=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.database' )
1391- DB_PORT=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.port' )
1409+ DB_HOST=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.primary' )
1410+ DB_USER=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.username' )
1411+ DB_PASSWORD=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.password' )
1412+ DB_NAME=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.database' )
1413+ DB_PORT=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.port' )
13921414 DB_CONSUMER=' {"' ${SERVICE_NAME_UPPERCASE} ' _HOST":"' ${DB_HOST} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _USERNAME":"' ${DB_USER} ' ","' ${SERVICE_NAME_UPPERCASE} ' _PASSWORD":"' ${DB_PASSWORD} ' ","' ${SERVICE_NAME_UPPERCASE} ' _DATABASE":"' ${DB_NAME} ' ","' ${SERVICE_NAME_UPPERCASE} ' _PORT":"' ${DB_PORT} ' "}'
1393- if DB_READREPLICA_HOSTS=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.replicas | .[]' 2> /dev/null) ; then
1415+ if DB_READREPLICA_HOSTS=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.replicas | .[]' 2> /dev/null) ; then
13941416 if [ " $DB_READREPLICA_HOSTS " != " null" ]; then
13951417 DB_READREPLICA_HOSTS=$( echo " $DB_READREPLICA_HOSTS " | sed ' s/^\|$//g' | paste -sd, -)
13961418 DB_CONSUMER=$( echo " ${DB_CONSUMER} " | jq ' . + {"' ${SERVICE_NAME_UPPERCASE} ' _READREPLICA_HOSTS":"' ${DB_READREPLICA_HOSTS} ' "}' )
@@ -1401,14 +1423,15 @@ done
14011423
14021424for SERVICE_NAME in " ${! POSTGRES_DBAAS_CONSUMER_SPECS[@]} "
14031425do
1426+ SERVICE_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .metadata.name' )
14041427 SERVICE_NAME_UPPERCASE=$( echo " $SERVICE_NAME " | tr ' [:lower:]' ' [:upper:]' | tr ' -' ' _' )
1405- DB_HOST=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.primary' )
1406- DB_USER=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.username' )
1407- DB_PASSWORD=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.password' )
1408- DB_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.database' )
1409- DB_PORT=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.port' )
1428+ DB_HOST=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.primary' )
1429+ DB_USER=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.username' )
1430+ DB_PASSWORD=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.password' )
1431+ DB_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.database' )
1432+ DB_PORT=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.port' )
14101433 DB_CONSUMER=' {"' ${SERVICE_NAME_UPPERCASE} ' _HOST":"' ${DB_HOST} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _USERNAME":"' ${DB_USER} ' ","' ${SERVICE_NAME_UPPERCASE} ' _PASSWORD":"' ${DB_PASSWORD} ' ","' ${SERVICE_NAME_UPPERCASE} ' _DATABASE":"' ${DB_NAME} ' ","' ${SERVICE_NAME_UPPERCASE} ' _PORT":"' ${DB_PORT} ' "}'
1411- if DB_READREPLICA_HOSTS=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.replicas | .[]' 2> /dev/null) ; then
1434+ if DB_READREPLICA_HOSTS=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.replicas | .[]' 2> /dev/null) ; then
14121435 if [ " $DB_READREPLICA_HOSTS " != " null" ]; then
14131436 DB_READREPLICA_HOSTS=$( echo " $DB_READREPLICA_HOSTS " | sed ' s/^\|$//g' | paste -sd, -)
14141437 DB_CONSUMER=$( echo " ${DB_CONSUMER} " | jq ' . + {"' ${SERVICE_NAME_UPPERCASE} ' _READREPLICA_HOSTS":"' ${DB_READREPLICA_HOSTS} ' "}' )
@@ -1419,15 +1442,16 @@ done
14191442
14201443for SERVICE_NAME in " ${! MONGODB_DBAAS_CONSUMER_SPECS[@]} "
14211444do
1445+ SERVICE_NAME=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .metadata.name' )
14221446 SERVICE_NAME_UPPERCASE=$( echo " $SERVICE_NAME " | tr ' [:lower:]' ' [:upper:]' | tr ' -' ' _' )
1423- DB_HOST=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.primary' )
1424- DB_USER=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.username' )
1425- DB_PASSWORD=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.password' )
1426- DB_NAME=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.database' )
1427- DB_PORT=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.port' )
1428- DB_AUTHSOURCE=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.auth.source' )
1429- DB_AUTHMECHANISM=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.auth.mechanism' )
1430- DB_AUTHTLS=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.auth.tls' )
1447+ DB_HOST=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.primary' )
1448+ DB_USER=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.username' )
1449+ DB_PASSWORD=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.password' )
1450+ DB_NAME=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.database' )
1451+ DB_PORT=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.port' )
1452+ DB_AUTHSOURCE=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.auth.source' )
1453+ DB_AUTHMECHANISM=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.auth.mechanism' )
1454+ DB_AUTHTLS=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.auth.tls' )
14311455 DB_CONSUMER=' {"' ${SERVICE_NAME_UPPERCASE} ' _HOST":"' ${DB_HOST} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _USERNAME":"' ${DB_USER} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _PASSWORD":"' ${DB_PASSWORD} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _DATABASE":"' ${DB_NAME} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _PORT":"' ${DB_PORT} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _AUTHSOURCE":"' ${DB_AUTHSOURCE} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _AUTHMECHANISM":"' ${DB_AUTHMECHANISM} ' ", "' ${SERVICE_NAME_UPPERCASE} ' _AUTHTLS":"' ${DB_AUTHTLS} ' "}'
14321456 DBAAS_VARIABLES=$( echo " $DBAAS_VARIABLES " | jq ' . + ' $( echo " $DB_CONSUMER " | jq -sMrc) ' ' )
14331457done
@@ -1803,15 +1827,15 @@ echo "Updating lagoon-yaml configmap with a post-deploy version of the .lagoon.y
18031827if kubectl -n ${NAMESPACE} get configmap lagoon-yaml & > /dev/null; then
18041828 # replace it, no need to check if the key is different, as that will happen in the pre-deploy phase
18051829 kubectl -n ${NAMESPACE} get configmap lagoon-yaml -o json | jq --arg add " ` cat .lagoon.yml` " ' .data."post-deploy" = $add' | kubectl apply -f -
1806- else
1830+ else
18071831 # create it
18081832 kubectl -n ${NAMESPACE} create configmap lagoon-yaml --from-file=post-deploy=.lagoon.yml
18091833fi
18101834echo " Updating docker-compose-yaml configmap with a post-deploy version of the docker-compose.yml file"
18111835if kubectl -n ${NAMESPACE} get configmap docker-compose-yaml & > /dev/null; then
18121836 # replace it, no need to check if the key is different, as that will happen in the pre-deploy phase
18131837 kubectl -n ${NAMESPACE} get configmap docker-compose-yaml -o json | jq --arg add " ` cat ${DOCKER_COMPOSE_YAML} ` " ' .data."post-deploy" = $add' | kubectl apply -f -
1814- else
1838+ else
18151839 # create it
18161840 kubectl -n ${NAMESPACE} create configmap docker-compose-yaml --from-file=post-deploy=" ${DOCKER_COMPOSE_YAML} "
18171841fi
@@ -1861,6 +1885,60 @@ if [ "$(featureFlag INSIGHTS)" = enabled ]; then
18611885 fi
18621886
18631887fi
1888+ else
1889+ # variable only deployment
1890+ beginBuildStep " Restarting Deployments" " restartingDeployments"
1891+
1892+ # #############################################
1893+ # ## APPLY RESOURCES for variable only deployments
1894+ # #############################################
1895+
1896+ # remove any storage calculator pods before restarting deployments to prevent storage binding issues
1897+ STORAGE_CALCULATOR_PODS=$( kubectl -n ${NAMESPACE} get pods -l lagoon.sh/storageCalculator=true --no-headers 2> /dev/null | cut -d " " -f 1 | xargs)
1898+ for STORAGE_CALCULATOR_POD in $STORAGE_CALCULATOR_PODS ; do
1899+ kubectl -n ${NAMESPACE} delete pod ${STORAGE_CALCULATOR_POD}
1900+ done
1901+
1902+ # patch the deployments with the changed configmap to force a rollout
1903+ CHANGES_MADE=false
1904+
1905+ DEPLOYMENTS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .deployments.items[]? | @base64' )
1906+ for DEPLOYMENT in ${DEPLOYMENTS}
1907+ do
1908+ SERVICE_NAME=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1909+ CURRENT_SHA=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .spec.template.metadata.annotations."lagoon.sh/configMapSha"' )
1910+ if [ " ${CONFIG_MAP_SHA} " != " ${CURRENT_SHA} " ]; then
1911+ CHANGES_MADE=true
1912+ kubectl -n ${NAMESPACE} patch deployment ${SERVICE_NAME} --type=merge --patch ' {"spec":{"template":{"metadata":{"annotations":{"lagoon.sh/configMapSha":"' ${CONFIG_MAP_SHA} ' "}}}}}'
1913+ fi
1914+ done
1915+
1916+ # wait for the deployments to restart
1917+ for DEPLOYMENT in ${DEPLOYMENTS}
1918+ do
1919+ SERVICE_NAME=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1920+ CURRENT_SHA=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .spec.template.metadata.annotations."lagoon.sh/configMapSha"' )
1921+ if [ " ${CONFIG_MAP_SHA} " != " ${CURRENT_SHA} " ]; then
1922+ . /kubectl-build-deploy/scripts/exec-monitor-deploy.sh
1923+ fi
1924+ done
1925+
1926+ if [ " $CHANGES_MADE " == " false" ]; then
1927+ echo " No variables changed, no services restarted"
1928+ fi
1929+
1930+ if kubectl -n ${NAMESPACE} get configmap lagoon-env & > /dev/null; then
1931+ # now delete the configmap after all the lagoon-env and lagoon-platform-env calcs have been done
1932+ # and the deployments have rolled out successfully, this makes less problems rolling back if a build fails
1933+ # somewhere between the new secret being created, and the deployments rolling out
1934+ kubectl -n ${NAMESPACE} delete configmap lagoon-env
1935+ fi
1936+
1937+ currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
1938+ patchBuildStep " ${buildStartTime} " " ${previousStepEnd} " " ${currentStepEnd} " " ${NAMESPACE} " " deploymentRestartComplete" " Restarting Deployments" " false"
1939+ previousStepEnd=${currentStepEnd}
1940+ # variable only deployment
1941+ fi
18641942
18651943EXTRA_WARNINGS=$( cat /tmp/warnings | wc -l)
18661944BUILD_WARNING_COUNT=$(( BUILD_WARNING_COUNT + EXTRA_WARNINGS))
0 commit comments