@@ -193,6 +193,8 @@ beginBuildStep "Initial Environment Collection" "collectEnvironment"
193193# ## COLLECT INFORMATION
194194# #############################################
195195
196+ echo " Collecting information about the environment"
197+
196198# run the collector
197199ENVIRONMENT_DATA=$( build-deploy-tool collect environment)
198200# echo "$ENVIRONMENT_DATA" | jq -r '.deployments.items[]?.name'
@@ -209,8 +211,22 @@ ENVIRONMENT_DATA=$(build-deploy-tool collect environment)
209211# echo "$ENVIRONMENT_DATA" | jq -r '.mongodbconsumers.items[]?.name'
210212# echo "$ENVIRONMENT_DATA" | jq -r '.postgresqlconsumers.items[]?.name'
211213
214+ LAGOON_VARIABLES_ONLY=$( buildEnvVarCheck LAGOON_VARIABLES_ONLY " false" )
215+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
216+ # do some checks to ensure safety and fail build if required
217+ if kubectl -n ${NAMESPACE} get configmap lagoon-env & > /dev/null; then
218+ # if the environment has a `lagoon-env` configmap present, fail this variable only deployment
219+ # if the configmap is still present, there are other changes required that only a full deployment can achieve
220+ echo " This environment currently doesn't support environment variable only deployments"
221+ echo " You will need to run a full deployment to ensure the environment is up to date"
222+ exit 1
223+ fi
224+ fi
225+
212226currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
213227patchBuildStep " ${buildStartTime} " " ${buildStartTime} " " ${currentStepEnd} " " ${NAMESPACE} " " collectEnvironment" " Initial Environment Collection" " false"
228+
229+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
214230previousStepEnd=${currentStepEnd}
215231beginBuildStep " Initial Environment Setup" " initialSetup"
216232echo " STEP: Preparation started ${buildStartTime} "
@@ -252,7 +268,7 @@ if kubectl -n ${NAMESPACE} get configmap lagoon-yaml &> /dev/null; then
252268 # if the key does exist, then nuke it and put the new key
253269 kubectl -n ${NAMESPACE} create configmap lagoon-yaml --from-file=pre-deploy=.lagoon.yml -o yaml --dry-run=client | kubectl replace -f -
254270 fi
255- else
271+ else
256272 # create it
257273 kubectl -n ${NAMESPACE} create configmap lagoon-yaml --from-file=pre-deploy=.lagoon.yml
258274fi
@@ -302,7 +318,7 @@ if kubectl -n ${NAMESPACE} get configmap docker-compose-yaml &> /dev/null; then
302318 # if the key does exist, then nuke it and put the new key
303319 kubectl -n ${NAMESPACE} create configmap docker-compose-yaml --from-file=pre-deploy=${DOCKER_COMPOSE_YAML} -o yaml --dry-run=client | kubectl replace -f -
304320 fi
305- else
321+ else
306322 # create it
307323 kubectl -n ${NAMESPACE} create configmap docker-compose-yaml --from-file=pre-deploy=${DOCKER_COMPOSE_YAML}
308324fi
@@ -1034,6 +1050,7 @@ if [ "${CURRENT_CHALLENGE_ROUTES[@]}" != "" ]; then
10341050 currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
10351051 patchBuildStep " ${buildStartTime} " " ${previousStepEnd} " " ${currentStepEnd} " " ${NAMESPACE} " " staleChallengesComplete" " Route/Ingress Certificate Challenges" " true"
10361052fi
1053+ fi
10371054previousStepEnd=${currentStepEnd}
10381055beginBuildStep " Update Environment Secrets" " updateEnvSecrets"
10391056
10851102# Get list of autogenerated routes
10861103AUTOGENERATED_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}}' )
10871104
1105+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
10881106# loop through created DBAAS templates
10891107DBAAS=($( build-deploy-tool identify dbaas) )
10901108for DBAAS_ENTRY in " ${DBAAS[@]} "
@@ -1105,43 +1123,63 @@ do
11051123 unset IMAGES_PULL[$SERVICE_NAME ]
11061124 CONSUMER_TYPE=" mariadbconsumer"
11071125 . /kubectl-build-deploy/scripts/exec-kubectl-dbaas-wait.sh
1108- MARIADB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mariadbconsumer/${SERVICE_NAME} -o json | jq -r ' .spec | @base64' )
1126+ MARIADB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mariadbconsumer/${SERVICE_NAME} -o json | jq -r ' . | @base64' )
11091127 ;;
11101128
11111129 postgres-dbaas)
11121130 # remove the image from images to pull
11131131 unset IMAGES_PULL[$SERVICE_NAME ]
11141132 CONSUMER_TYPE=" postgresqlconsumer"
11151133 . /kubectl-build-deploy/scripts/exec-kubectl-dbaas-wait.sh
1116- POSTGRES_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get postgresqlconsumer/${SERVICE_NAME} -o json | jq -r ' .spec | @base64' )
1134+ POSTGRES_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get postgresqlconsumer/${SERVICE_NAME} -o json | jq -r ' . | @base64' )
11171135 ;;
11181136
11191137 mongodb-dbaas)
11201138 # remove the image from images to pull
11211139 unset IMAGES_PULL[$SERVICE_NAME ]
11221140 CONSUMER_TYPE=" mongodbconsumer"
11231141 . /kubectl-build-deploy/scripts/exec-kubectl-dbaas-wait.sh
1124- MONGODB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mongodbconsumer/${SERVICE_NAME} -o json | jq -r ' .spec | @base64' )
1142+ MONGODB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( kubectl -n ${NAMESPACE} get mongodbconsumer/${SERVICE_NAME} -o json | jq -r ' . | @base64' )
11251143 ;;
11261144
11271145 * )
11281146 echo " DBAAS Type ${SERVICE_TYPE} not implemented" ; exit 1;
11291147
11301148 esac
11311149done
1150+ else
1151+ # variable only deployment
1152+ MARIADB_DBAAS_CONSUMERS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .mariadbconsumers.items[]? | @base64' )
1153+ for MARIADB_DBAAS_CONSUMER in ${MARIADB_DBAAS_CONSUMERS} ; do
1154+ SERVICE_NAME=$( echo ${MARIADB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1155+ MARIADB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( echo ${MARIADB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | . | @base64' )
1156+ done
1157+ MONGODB_DBAAS_CONSUMERS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .mongodbconsumers.items[]? | @base64' )
1158+ for MONGODB_DBAAS_CONSUMER in ${MONGODB_DBAAS_CONSUMERS} ; do
1159+ SERVICE_NAME=$( echo ${MONGODB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1160+ MONGODB_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( echo ${MONGODB_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | . | @base64' )
1161+ done
1162+ POSTGRES_DBAAS_CONSUMERS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .postgresqlconsumers.items[]? | @base64' )
1163+ for POSTGRES_DBAAS_CONSUMER in ${POSTGRES_DBAAS_CONSUMERS} ; do
1164+ SERVICE_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1165+ POSTGRES_DBAAS_CONSUMER_SPECS[" ${SERVICE_NAME} " ]=$( echo ${POSTGRES_DBAAS_CONSUMER} | jq -Rr ' @base64d | fromjson | . | @base64' )
1166+ done
1167+ # variable only deployment
1168+ fi
11321169
11331170# convert specs into credential dump for ingestion by build-deploy-tool
11341171DBAAS_VARIABLES=" []"
11351172for SERVICE_NAME in " ${! MARIADB_DBAAS_CONSUMER_SPECS[@]} "
11361173do
1174+ SERVICE_NAME=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .metadata.name' )
11371175 SERVICE_NAME_UPPERCASE=$( echo " $SERVICE_NAME " | tr ' [:lower:]' ' [:upper:]' | tr ' -' ' _' )
1138- DB_HOST=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.primary' )
1139- DB_USER=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.username' )
1140- DB_PASSWORD=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.password' )
1141- DB_NAME=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.database' )
1142- DB_PORT=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.port' )
1176+ DB_HOST=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.primary' )
1177+ DB_USER=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.username' )
1178+ DB_PASSWORD=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.password' )
1179+ DB_NAME=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.database' )
1180+ DB_PORT=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.port' )
11431181 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} ' "}'
1144- if DB_READREPLICA_HOSTS=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.replicas | .[]' 2> /dev/null) ; then
1182+ if DB_READREPLICA_HOSTS=$( echo ${MARIADB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.replicas | .[]' 2> /dev/null) ; then
11451183 if [ " $DB_READREPLICA_HOSTS " != " null" ]; then
11461184 DB_READREPLICA_HOSTS=$( echo " $DB_READREPLICA_HOSTS " | sed ' s/^\|$//g' | paste -sd, -)
11471185 DB_CONSUMER=$( echo " ${DB_CONSUMER} " | jq ' . + {"' ${SERVICE_NAME_UPPERCASE} ' _READREPLICA_HOSTS":"' ${DB_READREPLICA_HOSTS} ' "}' )
@@ -1152,14 +1190,15 @@ done
11521190
11531191for SERVICE_NAME in " ${! POSTGRES_DBAAS_CONSUMER_SPECS[@]} "
11541192do
1193+ SERVICE_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .metadata.name' )
11551194 SERVICE_NAME_UPPERCASE=$( echo " $SERVICE_NAME " | tr ' [:lower:]' ' [:upper:]' | tr ' -' ' _' )
1156- DB_HOST=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.primary' )
1157- DB_USER=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.username' )
1158- DB_PASSWORD=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.password' )
1159- DB_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.database' )
1160- DB_PORT=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.port' )
1195+ DB_HOST=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.primary' )
1196+ DB_USER=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.username' )
1197+ DB_PASSWORD=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.password' )
1198+ DB_NAME=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.database' )
1199+ DB_PORT=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.port' )
11611200 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} ' "}'
1162- if DB_READREPLICA_HOSTS=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.replicas | .[]' 2> /dev/null) ; then
1201+ if DB_READREPLICA_HOSTS=$( echo ${POSTGRES_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.replicas | .[]' 2> /dev/null) ; then
11631202 if [ " $DB_READREPLICA_HOSTS " != " null" ]; then
11641203 DB_READREPLICA_HOSTS=$( echo " $DB_READREPLICA_HOSTS " | sed ' s/^\|$//g' | paste -sd, -)
11651204 DB_CONSUMER=$( echo " ${DB_CONSUMER} " | jq ' . + {"' ${SERVICE_NAME_UPPERCASE} ' _READREPLICA_HOSTS":"' ${DB_READREPLICA_HOSTS} ' "}' )
@@ -1170,15 +1209,16 @@ done
11701209
11711210for SERVICE_NAME in " ${! MONGODB_DBAAS_CONSUMER_SPECS[@]} "
11721211do
1212+ SERVICE_NAME=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .metadata.name' )
11731213 SERVICE_NAME_UPPERCASE=$( echo " $SERVICE_NAME " | tr ' [:lower:]' ' [:upper:]' | tr ' -' ' _' )
1174- DB_HOST=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.services.primary' )
1175- DB_USER=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.username' )
1176- DB_PASSWORD=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.password' )
1177- DB_NAME=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .consumer.database' )
1178- DB_PORT=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.port' )
1179- DB_AUTHSOURCE=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.auth.source' )
1180- DB_AUTHMECHANISM=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.auth.mechanism' )
1181- DB_AUTHTLS=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .provider.auth.tls' )
1214+ DB_HOST=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.services.primary' )
1215+ DB_USER=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.username' )
1216+ DB_PASSWORD=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.password' )
1217+ DB_NAME=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. consumer.database' )
1218+ DB_PORT=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.port' )
1219+ DB_AUTHSOURCE=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.auth.source' )
1220+ DB_AUTHMECHANISM=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.auth.mechanism' )
1221+ DB_AUTHTLS=$( echo ${MONGODB_DBAAS_CONSUMER_SPECS["$SERVICE_NAME"]} | jq -Rr ' @base64d | fromjson | .spec. provider.auth.tls' )
11821222 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} ' "}'
11831223 DBAAS_VARIABLES=$( echo " $DBAAS_VARIABLES " | jq ' . + ' $( echo " $DB_CONSUMER " | jq -sMrc) ' ' )
11841224done
@@ -1297,11 +1337,6 @@ fi
12971337# and instruct the user to either add the variable to the API, or contact support if they are unsure what the variable is
12981338# insert warning message generator here?
12991339
1300- currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
1301- patchBuildStep " ${buildStartTime} " " ${previousStepEnd} " " ${currentStepEnd} " " ${NAMESPACE} " " updateEnvSecretsComplete" " Update Environment Secrets" " false"
1302- previousStepEnd=${currentStepEnd}
1303- beginBuildStep " Image Push to Registry" " pushingImages"
1304-
13051340# #############################################
13061341# ## REDEPLOY DEPLOYMENTS IF CONFIG MAP CHANGES
13071342# #############################################
@@ -1313,6 +1348,13 @@ LAGOONPLATFORMENV_SHA=$(kubectl --insecure-skip-tls-verify -n ${NAMESPACE} get s
13131348CONFIG_MAP_SHA=$( echo $LAGOONENV_SHA$LAGOONPLATFORMENV_SHA | sha256sum | awk ' {print $1}' )
13141349export CONFIG_MAP_SHA
13151350
1351+ currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
1352+ patchBuildStep " ${buildStartTime} " " ${previousStepEnd} " " ${currentStepEnd} " " ${NAMESPACE} " " updateEnvSecretsComplete" " Update Environment Secrets" " false"
1353+ previousStepEnd=${currentStepEnd}
1354+
1355+ if [ " ${LAGOON_VARIABLES_ONLY} " != " true" ]; then
1356+ beginBuildStep " Image Push to Registry" " pushingImages"
1357+
13161358# #############################################
13171359# ## PUSH IMAGES TO REGISTRY
13181360# #############################################
@@ -1670,15 +1712,15 @@ echo "Updating lagoon-yaml configmap with a post-deploy version of the .lagoon.y
16701712if kubectl -n ${NAMESPACE} get configmap lagoon-yaml & > /dev/null; then
16711713 # replace it, no need to check if the key is different, as that will happen in the pre-deploy phase
16721714 kubectl -n ${NAMESPACE} get configmap lagoon-yaml -o json | jq --arg add " ` cat .lagoon.yml` " ' .data."post-deploy" = $add' | kubectl apply -f -
1673- else
1715+ else
16741716 # create it
16751717 kubectl -n ${NAMESPACE} create configmap lagoon-yaml --from-file=post-deploy=.lagoon.yml
16761718fi
16771719echo " Updating docker-compose-yaml configmap with a post-deploy version of the docker-compose.yml file"
16781720if kubectl -n ${NAMESPACE} get configmap docker-compose-yaml & > /dev/null; then
16791721 # replace it, no need to check if the key is different, as that will happen in the pre-deploy phase
16801722 kubectl -n ${NAMESPACE} get configmap docker-compose-yaml -o json | jq --arg add " ` cat ${DOCKER_COMPOSE_YAML} ` " ' .data."post-deploy" = $add' | kubectl apply -f -
1681- else
1723+ else
16821724 # create it
16831725 kubectl -n ${NAMESPACE} create configmap docker-compose-yaml --from-file=post-deploy=${DOCKER_COMPOSE_YAML}
16841726fi
@@ -1737,6 +1779,60 @@ if [ "$(featureFlag INSIGHTS)" = enabled ]; then
17371779 fi
17381780
17391781fi
1782+ else
1783+ # variable only deployment
1784+ beginBuildStep " Restarting Deployments" " restartingDeployments"
1785+
1786+ # #############################################
1787+ # ## APPLY RESOURCES for variable only deployments
1788+ # #############################################
1789+
1790+ # remove any storage calculator pods before restarting deployments to prevent storage binding issues
1791+ STORAGE_CALCULATOR_PODS=$( kubectl -n ${NAMESPACE} get pods -l lagoon.sh/storageCalculator=true --no-headers 2> /dev/null | cut -d " " -f 1 | xargs)
1792+ for STORAGE_CALCULATOR_POD in $STORAGE_CALCULATOR_PODS ; do
1793+ kubectl -n ${NAMESPACE} delete pod ${STORAGE_CALCULATOR_POD}
1794+ done
1795+
1796+ # patch the deployments with the changed configmap to force a rollout
1797+ CHANGES_MADE=false
1798+
1799+ DEPLOYMENTS=$( echo " $ENVIRONMENT_DATA " | jq -r ' .deployments.items[]? | @base64' )
1800+ for DEPLOYMENT in ${DEPLOYMENTS}
1801+ do
1802+ SERVICE_NAME=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1803+ CURRENT_SHA=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .spec.template.metadata.annotations."lagoon.sh/configMapSha"' )
1804+ if [ " ${CONFIG_MAP_SHA} " != " ${CURRENT_SHA} " ]; then
1805+ CHANGES_MADE=true
1806+ kubectl -n ${NAMESPACE} patch deployment ${SERVICE_NAME} --type=merge --patch ' {"spec":{"template":{"metadata":{"annotations":{"lagoon.sh/configMapSha":"' ${CONFIG_MAP_SHA} ' "}}}}}'
1807+ fi
1808+ done
1809+
1810+ # wait for the deployments to restart
1811+ for DEPLOYMENT in ${DEPLOYMENTS}
1812+ do
1813+ SERVICE_NAME=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .metadata.name' )
1814+ CURRENT_SHA=$( echo ${DEPLOYMENT} | jq -Rr ' @base64d | fromjson | .spec.template.metadata.annotations."lagoon.sh/configMapSha"' )
1815+ if [ " ${CONFIG_MAP_SHA} " != " ${CURRENT_SHA} " ]; then
1816+ . /kubectl-build-deploy/scripts/exec-monitor-deploy.sh
1817+ fi
1818+ done
1819+
1820+ if [ " $CHANGES_MADE " == " false" ]; then
1821+ echo " No variables changed, no services restarted"
1822+ fi
1823+
1824+ if kubectl -n ${NAMESPACE} get configmap lagoon-env & > /dev/null; then
1825+ # now delete the configmap after all the lagoon-env and lagoon-platform-env calcs have been done
1826+ # and the deployments have rolled out successfully, this makes less problems rolling back if a build fails
1827+ # somewhere between the new secret being created, and the deployments rolling out
1828+ kubectl -n ${NAMESPACE} delete configmap lagoon-env
1829+ fi
1830+
1831+ currentStepEnd=" $( date +" %Y-%m-%d %H:%M:%S" ) "
1832+ patchBuildStep " ${buildStartTime} " " ${previousStepEnd} " " ${currentStepEnd} " " ${NAMESPACE} " " deploymentRestartComplete" " Restarting Deployments" " false"
1833+ previousStepEnd=${currentStepEnd}
1834+ # variable only deployment
1835+ fi
17401836
17411837if [[ " $BUILD_WARNING_COUNT " -gt 0 ]]; then
17421838 beginBuildStep " Completed With Warnings" " deployCompletedWithWarnings"
0 commit comments