diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml index 86a55e88ab277d9a43b7196e394825931c4b68ca..a5fd46cffc2160a314a209a195939d04c67199b8 100644 --- a/.gitlab/ci/review-apps/main.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml @@ -105,4 +105,4 @@ review-stop: stage: deploy needs: [] script: - - delete_k8s_release_namespace + - delete_namespace diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index b08964f26f16a884630e1930c48d38838b8dbb1b..db8046fee07e8083bc056b89f5921688ee66089d 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -9,12 +9,13 @@ review-cleanup: action: stop before_script: - source scripts/utils.sh + - source scripts/review_apps/review-apps.sh - source scripts/review_apps/gcp_cleanup.sh - install_gitlab_gem - setup_gcp_dependencies script: - delete_release - - delete_k8s_release_namespace + - delete_namespace - ruby -rrubygems scripts/review_apps/automated_cleanup.rb - gcp_cleanup diff --git a/scripts/review_apps/review-apps.sh b/scripts/review_apps/review-apps.sh index 88913b4e972dc2b39145abaf7612179fe3793f63..191b20eff3e308b87131b4fb0b6405a053a19636 100755 --- a/scripts/review_apps/review-apps.sh +++ b/scripts/review_apps/review-apps.sh @@ -1,5 +1,23 @@ [[ "$TRACE" ]] && set -x +function namespace_exists() { + local namespace="${1}" + local namespace_exists + + echoinfo "Checking if ${namespace} exists..." true + + kubectl describe namespace "${namespace}" >/dev/null 2>&1 + namespace_exists=$? + + if [ $namespace_exists -eq 0 ]; then + echoinfo "Namespace ${namespace} found." + else + echoerr "Namespace ${namespace} NOT found." + fi + + return $namespace_exists +} + function deploy_exists() { local namespace="${1}" local release="${2}" @@ -73,17 +91,20 @@ function delete_failed_release() { # Cleanup and previous installs, as FAILED and PENDING_UPGRADE will cause errors with `upgrade` if previous_deploy_failed "${namespace}" "${release}" ; then echoinfo "Review App deployment in bad state, cleaning up namespace ${release}" - delete_k8s_release_namespace + delete_namespace else echoinfo "Review App deployment in good state" fi fi } -function delete_k8s_release_namespace() { +function delete_namespace() { local namespace="${CI_ENVIRONMENT_SLUG}" - kubectl delete namespace "${namespace}" --wait + if namespace_exists "${namespace}"; then + echoinfo "Deleting namespace ${namespace}..." true + kubectl delete namespace "${namespace}" --wait + fi } function get_pod() { @@ -170,9 +191,10 @@ function check_kube_domain() { function ensure_namespace() { local namespace="${1}" - echoinfo "Ensuring the ${namespace} namespace exists..." true - - kubectl describe namespace "${namespace}" || kubectl create namespace "${namespace}" + if ! namespace_exists "${namespace}"; then + echoinfo "Creating namespace ${namespace}..." true + kubectl create namespace "${namespace}" + fi } function label_namespace() {