Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement feature to fail builds on docker-compose yaml errors #340

Merged
merged 2 commits into from
Oct 30, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading