From febf1dc81755db389a66efd7208e4e4df9759237 Mon Sep 17 00:00:00 2001 From: Timo Furrer <tfurrer@gitlab.com> Date: Tue, 4 Feb 2025 13:44:34 +0100 Subject: [PATCH] Introduce pipeline rules for state cleaner optimization --- .gitlab-ci.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 00e70a5..47ba383 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,12 +5,17 @@ workflow: - if: $CI_COMMIT_TAG - if: $CI_COMMIT_REF_PROTECTED == "true" +.rule:skip-when-state-cleaner: &rule_skip_when_state_cleaner + - if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_PIPELINE_SCHEDULE_DESCRIPTION == "state cleaner"' + when: never + include: - local: opentofu_versions.yaml - local: tests/unit.gitlab-ci.yml rules: - if: $SKIP_TESTS == "true" when: never + - *rule_skip_when_state_cleaner - changes: - src/gitlab-tofu.sh - opentofu_versions.yaml @@ -24,6 +29,7 @@ include: rules: - if: $SKIP_TESTS == "true" when: never + - *rule_skip_when_state_cleaner - changes: - src/gitlab-tofu.sh - opentofu_versions.yaml @@ -110,6 +116,7 @@ variables: check-semantic-version: stage: .pre rules: + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG image: alpine:3.21.2 before_script: @@ -118,6 +125,7 @@ check-semantic-version: - echo -n "$CI_COMMIT_TAG" | ./.gitlab/scripts/check-semantic-version.sh .gitlab-opentofu-image:build:base:rules: &gitlab-opentofu-image-build-base-rules + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG - changes: - Dockerfile.* @@ -182,6 +190,9 @@ check-versions: stage: test needs: [] image: alpine:3.21.2 + rules: + - *rule_skip_when_state_cleaner + - when: on_success before_script: - apk add coreutils yq patch git script: @@ -198,6 +209,7 @@ check-readme: - make docs - git diff --exit-code rules: + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG - changes: - Makefile @@ -215,6 +227,7 @@ shellcheck: - shellcheck ./src/gitlab-tofu.sh - shellcheck ./.gitlab/scripts/*.sh rules: + - *rule_skip_when_state_cleaner - changes: - .gitlab-ci.yml - src/gitlab-tofu.sh @@ -251,6 +264,7 @@ gitlab-opentofu-image:deploy: script: - crane copy "$GITLAB_OPENTOFU_IMAGE_NAME" "$RELEASE_IMAGE" rules: + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG gitlab-opentofu-image:deploy:dry-run: @@ -263,6 +277,7 @@ gitlab-opentofu-image:deploy:dry-run: script: - echo "dry run" rules: + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG when: never - changes: @@ -318,6 +333,7 @@ gitlab-opentofu-image:sign: paths: - 'image*.md' rules: + - *rule_skip_when_state_cleaner - if: '$CI_SERVER_FQDN == "gitlab.com" && $CI_COMMIT_TAG' gitlab-opentofu-image:verify-signature: @@ -336,6 +352,7 @@ gitlab-opentofu-image:verify-signature: "$RELEASE_IMAGE" "$(crane digest --full-ref "$RELEASE_IMAGE")" rules: + - *rule_skip_when_state_cleaner - if: '$CI_SERVER_FQDN == "gitlab.com" && $CI_COMMIT_TAG' .release:base: @@ -354,6 +371,7 @@ gitlab-opentofu-image:verify-signature: release: extends: ['.release:base'] rules: + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG variables: RELEASE_TAG_NAME: $CI_COMMIT_TAG @@ -364,6 +382,7 @@ release: release:dry-run: extends: ['.release:base'] rules: + - *rule_skip_when_state_cleaner - if: $CI_COMMIT_TAG when: never - changes: @@ -388,4 +407,4 @@ old-states: - echo "Going to remove Terraform States older than '$FETCH_OLDER_THAN'" - ./.gitlab/scripts/fetch-states.sh | sed -n '1d;p' | ./.gitlab/scripts/remove-states.sh rules: - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $STATE_CLEANER == "true"' + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "schedule" && $CI_PIPELINE_SCHEDULE_DESCRIPTION == "state cleaner"' -- GitLab