Skip to content

Commit

Permalink
feat: implement feature to fail builds on docker-compose yaml errors (#…
Browse files Browse the repository at this point in the history
…340)

* feat: implement feature to start failing builds on docker-compose yaml errors

* feat: implement feature to start failing builds on docker-compose yaml errors
  • Loading branch information
shreddedbacon authored Oct 30, 2024
1 parent 95789b8 commit 4e37875
Showing 1 changed file with 40 additions and 3 deletions.
43 changes: 40 additions & 3 deletions legacy/build-deploy-docker-compose.sh
Original file line number Diff line number Diff line change
Expand Up @@ -255,11 +255,38 @@ dccExit2=$?
if [ "${dccExit2}" != "0" ]; then
((++DOCKER_COMPOSE_WARNING_COUNT))
if [ "${dccExit}" == "0" ]; then

# this logic is to phase rollout of https://github.com/uselagoon/build-deploy-tool/pull/304
# anything returned by this section will be a yaml error that we need to check if the feature to enable/disable errors
# is configured, and that the environment type matches.
# eventually this logic will be changed entirely from warnings to errors
DOCKER_COMPOSE_VALIDATION_ERROR=false
DOCKER_COMPOSE_VALIDATION_ERROR_VARIABLE=LAGOON_FEATURE_FLAG_DEVELOPMENT_DOCKER_COMPOSE_VALIDATION
# this logic will make development environments return an error by default
# adding LAGOON_FEATURE_FLAG_DEVELOPMENT_DOCKER_COMPOSE_VALIDATION=disabled can be used to disable the error and revert to a warning per project or environment
# or add LAGOON_FEATURE_FLAG_DEFAULT_DEVELOPMENT_DOCKER_COMPOSE_VALIDATION=disabled to the remote-controller as a default to disable for a cluster
if [[ "$(featureFlag DEVELOPMENT_DOCKER_COMPOSE_VALIDATION)" != disabled ]] && [[ "$ENVIRONMENT_TYPE" == "development" ]]; then
DOCKER_COMPOSE_VALIDATION_ERROR=true
fi
# by default, production environments won't return an error unless the feature flag is enabled.
# this allows using the feature flag to selectively apply to production environments if required
# adding LAGOON_FEATURE_FLAG_PRODUCTION_DOCKER_COMPOSE_VALIDATION=enabled can be used to enable the error per project or environment
# or add LAGOON_FEATURE_FLAG_DEFAULT_PRODUCTION_DOCKER_COMPOSE_VALIDATION=enabled to the remote-controller as a default to disable for a cluster
if [[ "$(featureFlag PRODUCTION_DOCKER_COMPOSE_VALIDATION)" = enabled ]] && [[ "$ENVIRONMENT_TYPE" == "production" ]]; then
DOCKER_COMPOSE_VALIDATION_ERROR=true
DOCKER_COMPOSE_VALIDATION_ERROR_VARIABLE=LAGOON_FEATURE_FLAG_PRODUCTION_DOCKER_COMPOSE_VALIDATION
fi

((++BUILD_WARNING_COUNT))
echo "
##############################################
Warning!
There are issues with your docker compose file that lagoon uses that should be fixed.
##############################################"
if [[ "$DOCKER_COMPOSE_VALIDATION_ERROR" == "true" ]]; then
echo "Error!"
else
echo "Warning!"
fi

echo "There are issues with your docker compose file that lagoon uses that should be fixed.
You can run docker compose config locally to check that your docker-compose file is valid.
"
fi
Expand All @@ -281,6 +308,16 @@ else
previousStepEnd=${currentStepEnd}
fi


if [[ "$DOCKER_COMPOSE_VALIDATION_ERROR" == "true" ]]; then
# drop the exit here if this should be an error
echo "> You can instruct Lagoon to change this to a warning by setting the following variable"
echo "> '${DOCKER_COMPOSE_VALIDATION_ERROR_VARIABLE}=disabled' as a GLOBAL scoped variable to this environment or project."
echo "> A future release of Lagoon will not be able to change this error."
echo "> You should correct the issue as soon as possible to prevent future build failures."
exit 1
fi

beginBuildStep ".lagoon.yml Validation" "lagoonYmlValidation"
##############################################
### RUN lagoon-yml validation against the final data which may have overrides
Expand Down

0 comments on commit 4e37875

Please sign in to comment.