From 6327bc492ce7dfd388059793381fa293dd9dd197 Mon Sep 17 00:00:00 2001 From: Maarten de Waard <maarten@greenhost.nl> Date: Wed, 4 May 2022 09:31:20 +0200 Subject: [PATCH] feat: make sure helmreleases are deleted after MRs are merged --- .gitlab-ci.yml | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd4531d6..5b742623 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,12 +1,9 @@ include: - # - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/main/.gitlab/ci_templates/helm_package.yml - # TODO: Remove after this MR is merged: - # https://open.greenhost.net/stackspin/stackspin/-/merge_requests/1049 - - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/update-helm-package-ci-template/.gitlab/ci_templates/helm_package.yml + - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/main/.gitlab/ci_templates/helm_package.yml - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/main/.gitlab/ci_templates/dummy_job.yml - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml' -.use-kubernetes: +.use_kubernetes: image: name: alpine/k8s:1.22.6 entrypoint: ["/bin/sh", "-c"] @@ -23,6 +20,15 @@ include: - values.yaml - Chart.yaml +.delete_helmrelease: + stage: install-helm-chart + script: + - cd ${CHART_DIR:-"."} + - ./fully-delete-helmrelease.sh "$RELEASE_NAME" + extends: + - .use_kubernetes + - .chart_changes_rules + stages: - lint-helm-chart - install-helm-chart @@ -35,21 +41,23 @@ variables: CHART_NAME: nextcloud-onlyoffice RELEASE_NAME: "nc$CI_MERGE_REQUEST_IID" -delete-helmrelease: - stage: install-helm-chart - script: - - cd ${CHART_DIR:-"."} - - ./fully-delete-helmrelease.sh "$RELEASE_NAME" - environment: - name: helmrelease/$RELEASE_NAME - action: stop +pre-install-delete-helmrelease: extends: - - .use-kubernetes - - .chart_changes_rules + - .delete_helmrelease # This job will fail if a helmrelease didn't exist (yet). For example in a # first pipeline for an MR. allow_failure: true +# This will clean up helmreleases after MRs have been merged, or after some time +post-install-delete-helmrelease: + extends: + - .delete_helmrelease + # Gets triggered by on_stop of install-helmrelease, or manually + when: manual + environment: + name: helmrelease/$RELEASE_NAME + action: stop + install-helmrelease: stage: install-helm-chart needs: @@ -57,7 +65,7 @@ install-helmrelease: - job: lint-helm # We can't install if there's still an installation from a previous run # present. - - job: delete-helmrelease + - job: pre-install-delete-helmrelease script: - cd ${CHART_DIR:-"."} - cp values-local.yaml.example values-ci.yaml @@ -72,9 +80,9 @@ install-helmrelease: name: helmrelease/$RELEASE_NAME url: https://files-$RELEASE_NAME.gitlab.stackspin.net auto_stop_in: 1 week - on_stop: delete-helmrelease + on_stop: post-install-delete-helmrelease extends: - - .use-kubernetes + - .use_kubernetes - .chart_changes_rules test-helm-chart: @@ -83,5 +91,5 @@ test-helm-chart: - cd ${CHART_DIR:-"."} - helm test --logs "$RELEASE_NAME" extends: - - .use-kubernetes + - .use_kubernetes - .chart_changes_rules -- GitLab