From 3d100a81f477a0da1b49bb496704bfa2afbaa854 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin <jen-shin@gitlab.com> Date: Thu, 1 Feb 2024 01:37:24 +0800 Subject: [PATCH] Use a dummy collector if the feature is not available Dev is a CE/FOSS instance so `needs.project` is not available, breaking the whole pipeline. See: https://dev.gitlab.org/gitlab/gitlab-ee/-/pipelines/314462 Which shows: jobs:rspec:artifact-collector as-if-foss:needs:need has an unsupported type --- .../as-if-foss-dummy.gitlab-ci.yml | 5 ++++ .../as-if-foss.gitlab-ci.yml | 19 ++++++++++++++ .gitlab/ci/rails.gitlab-ci.yml | 26 +++++-------------- 3 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 .gitlab/ci/artifact-collector/as-if-foss-dummy.gitlab-ci.yml create mode 100644 .gitlab/ci/artifact-collector/as-if-foss.gitlab-ci.yml diff --git a/.gitlab/ci/artifact-collector/as-if-foss-dummy.gitlab-ci.yml b/.gitlab/ci/artifact-collector/as-if-foss-dummy.gitlab-ci.yml new file mode 100644 index 000000000000..2c0e11618630 --- /dev/null +++ b/.gitlab/ci/artifact-collector/as-if-foss-dummy.gitlab-ci.yml @@ -0,0 +1,5 @@ +rspec:artifact-collector as-if-foss: + rules: + - when: never + script: + - echo OK diff --git a/.gitlab/ci/artifact-collector/as-if-foss.gitlab-ci.yml b/.gitlab/ci/artifact-collector/as-if-foss.gitlab-ci.yml new file mode 100644 index 000000000000..b0078bd2d9ee --- /dev/null +++ b/.gitlab/ci/artifact-collector/as-if-foss.gitlab-ci.yml @@ -0,0 +1,19 @@ +rspec:artifact-collector as-if-foss: + extends: + - .artifact-collector + - .as-if-foss:rules:start-as-if-foss + needs: + # We need to wait for `start-as-if-foss` because cross project needs + # will not wait, and it'll simply look at the latest pipeline regardless + # status. This means we need to wait for the whole FOSS pipeline before + # trying to fetch the artifacts from there, ensuring they're available. + - job: start-as-if-foss + - project: gitlab-org/gitlab-foss + ref: as-if-foss/${CI_COMMIT_REF_NAME} + job: rspec:artifact-collector unit + - project: gitlab-org/gitlab-foss + ref: as-if-foss/${CI_COMMIT_REF_NAME} + job: rspec:artifact-collector system + - project: gitlab-org/gitlab-foss + ref: as-if-foss/${CI_COMMIT_REF_NAME} + job: rspec:artifact-collector remainder diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 09ce8f8d0f9d..644ee63f57ba 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -1,5 +1,11 @@ include: - local: .gitlab/ci/rails/shared.gitlab-ci.yml + - local: .gitlab/ci/artifact-collector/as-if-foss.gitlab-ci.yml + rules: + - if: '$GITLAB_FEATURES =~ /\bcross_project_pipelines\b/' + - local: .gitlab/ci/artifact-collector/as-if-foss-dummy.gitlab-ci.yml + rules: + - if: '$GITLAB_FEATURES !~ /\bcross_project_pipelines\b/' ############################################################### # EE/FOSS: default refs (MRs, default branch, schedules) jobs # @@ -358,26 +364,6 @@ rspec:artifact-collector unit: - job: rspec unit clickhouse # 1 job optional: true -rspec:artifact-collector as-if-foss: - extends: - - .artifact-collector - - .as-if-foss:rules:start-as-if-foss - needs: - # We need to wait for `start-as-if-foss` because cross project needs - # will not wait, and it'll simply look at the latest pipeline regardless - # status. This means we need to wait for the whole FOSS pipeline before - # trying to fetch the artifacts from there, ensuring they're available. - - job: start-as-if-foss - - project: gitlab-org/gitlab-foss - ref: as-if-foss/${CI_COMMIT_REF_NAME} - job: rspec:artifact-collector unit - - project: gitlab-org/gitlab-foss - ref: as-if-foss/${CI_COMMIT_REF_NAME} - job: rspec:artifact-collector system - - project: gitlab-org/gitlab-foss - ref: as-if-foss/${CI_COMMIT_REF_NAME} - job: rspec:artifact-collector remainder - rspec:artifact-collector system: extends: - .artifact-collector -- GitLab