# HG changeset patch # User Balasankar 'Balu' C <balasankar@gitlab.com> # Date 1730219851 0 # Tue Oct 29 16:37:31 2024 +0000 # Node ID 8ba0bf61165687e23a8ba7c102b5e26673972b46 # Parent 985dc471b8541874ed45a6ec48eb324d8e47ccbc Use multi-project pipelines for RAT triggers Signed-off-by: Balasankar 'Balu' C <balasankar@gitlab.com> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,7 @@ include: - local: '/gitlab-ci-config/workflow-rules.yml' - local: '/gitlab-ci-config/variables.yml' + - local: '/gitlab-ci-config/rat.yml' - local: '/gitlab-ci-config/dev-gitlab-org.yml' - local: '/gitlab-ci-config/gitlab-com.yml' rules: diff --git a/gitlab-ci-config/dev-gitlab-org.yml b/gitlab-ci-config/dev-gitlab-org.yml --- a/gitlab-ci-config/dev-gitlab-org.yml +++ b/gitlab-ci-config/dev-gitlab-org.yml @@ -1057,19 +1057,6 @@ - if: '$PIPELINE_TYPE =~ /_(RC|TAG)_BUILD_PIPELINE$/' when: manual -RAT-Tag: - stage: qa - image: "dev.gitlab.org:5005/cookbooks/gitlab-omnibus-builder/ubuntu_22.04:${BUILDER_IMAGE_REVISION}" - script: - - bundle exec rake qa:rat:tag - cache: !reference [.tag-cache] - needs: - - Ubuntu-22.04 - allow_failure: true - rules: - - !reference [.default_rules, rules] - - if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/' - Raspberry-Pi-2-Buster: extends: .rpi_tag_template image: "${BUILDER_IMAGE_REGISTRY}/rpi_10:${BUILDER_IMAGE_REVISION}" diff --git a/gitlab-ci-config/gitlab-com.yml b/gitlab-ci-config/gitlab-com.yml --- a/gitlab-ci-config/gitlab-com.yml +++ b/gitlab-ci-config/gitlab-com.yml @@ -542,54 +542,6 @@ - job: Docker-branch artifacts: false -RAT: - stage: qa - variables: - PACKAGE_URL: ${RAT_PACKAGE_URL} - REFERENCE_ARCHITECTURE: ${RAT_REFERENCE_ARCHITECTURE} - QA_IMAGE: ${QA_IMAGE} - trigger: - project: 'gitlab-org/distribution/reference-architecture-tester' - branch: 'master' - strategy: depend - forward: - pipeline_variables: false - yaml_variables: true - rules: - - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"' - when: manual - allow_failure: true - - if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"' - allow_failure: true - variables: - NIGHTLY: 'true' - needs: - - job: Ubuntu-22.04-branch - artifacts: false - - job: generate-facts - artifacts: true - -RAT:FIPS: - extends: RAT - variables: - PACKAGE_URL: ${RAT_FIPS_PACKAGE_URL} - REFERENCE_ARCHITECTURE: ${RAT_FIPS_REFERENCE_ARCHITECTURE} - needs: - - job: Ubuntu-20.04-fips-branch - artifacts: false - - job: generate-facts - artifacts: true - -RAT:ref_arch_envs: - extends: RAT - parallel: - matrix: - - REFERENCE_ARCHITECTURE: [1k, 2k, 3k, 10k] - rules: - - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"' - when: manual - allow_failure: true - GET:Geo: stage: qa variables: diff --git a/gitlab-ci-config/rat.yml b/gitlab-ci-config/rat.yml new file mode 100644 --- /dev/null +++ b/gitlab-ci-config/rat.yml @@ -0,0 +1,64 @@ +RAT: + stage: qa + variables: + PACKAGE_URL: ${RAT_PACKAGE_URL} + REFERENCE_ARCHITECTURE: ${RAT_REFERENCE_ARCHITECTURE} + QA_IMAGE: ${QA_IMAGE} + trigger: + project: ${RAT_PROJECT_PATH} + branch: 'master' + strategy: depend + forward: + pipeline_variables: false + yaml_variables: true + rules: + - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"' + when: manual + allow_failure: true + - if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"' + allow_failure: true + variables: + NIGHTLY: 'true' + - if: '$PIPELINE_TYPE =~ /^EE_(RC|TAG)_BUILD_PIPELINE$/' + allow_failure: true + variables: + PRE_RELEASE: 'true' + PACKAGE_VERSION: ${RAT_PACKAGE_VERSION} + needs: + - job: Ubuntu-22.04-branch + artifacts: false + optional: true + - job: Ubuntu-22.04 + artifacts: false + optional: true + - job: generate-facts + artifacts: true + +RAT:FIPS: + extends: RAT + variables: + PACKAGE_URL: ${RAT_FIPS_PACKAGE_URL} + REFERENCE_ARCHITECTURE: ${RAT_FIPS_REFERENCE_ARCHITECTURE} + rules: + - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"' + when: manual + allow_failure: true + - if: '$PIPELINE_TYPE == "EE_NIGHTLY_BUILD_PIPELINE"' + allow_failure: true + variables: + NIGHTLY: 'true' + needs: + - job: Ubuntu-20.04-fips-branch + artifacts: false + - job: generate-facts + artifacts: true + +RAT:ref_arch_envs: + extends: RAT + parallel: + matrix: + - REFERENCE_ARCHITECTURE: [1k, 2k, 3k, 10k] + rules: + - if: '$PIPELINE_TYPE == "TRIGGERED_EE_PIPELINE"' + when: manual + allow_failure: true diff --git a/gitlab-ci-config/variables.yml b/gitlab-ci-config/variables.yml --- a/gitlab-ci-config/variables.yml +++ b/gitlab-ci-config/variables.yml @@ -43,3 +43,4 @@ OPENSSL_VERSION: '1.1.1' FF_TIMESTAMPS: true OPENSSL_GEM_VERSION: '~> 3.2.0' + RAT_PROJECT_PATH: 'gitlab-org/distribution/reference-architecture-tester' diff --git a/lib/gitlab/build/facts.rb b/lib/gitlab/build/facts.rb --- a/lib/gitlab/build/facts.rb +++ b/lib/gitlab/build/facts.rb @@ -94,6 +94,7 @@ RAT_FIPS_REFERENCE_ARCHITECTURE=#{Gitlab::Util.get_env('RAT_FIPS_REFERENCE_ARCHITECTURE') || 'omnibus-gitlab-mrs-fips-ubuntu'} RAT_PACKAGE_URL=#{Build::Info::CI.package_download_url(fips: false)} RAT_FIPS_PACKAGE_URL=#{Build::Info::CI.package_download_url(job_name: 'Ubuntu-20.04', fips: true)} + RAT_PACKAGE_VERSION=#{Build::Info::Package.name_version} ] end diff --git a/lib/gitlab/build/rat.rb b/lib/gitlab/build/rat.rb deleted file mode 100644 --- a/lib/gitlab/build/rat.rb +++ /dev/null @@ -1,2 +0,0 @@ -require_relative 'rat/nightly' -require_relative 'rat/tag' diff --git a/lib/gitlab/build/rat/nightly.rb b/lib/gitlab/build/rat/nightly.rb deleted file mode 100644 --- a/lib/gitlab/build/rat/nightly.rb +++ /dev/null @@ -1,35 +0,0 @@ -require 'cgi' - -require_relative '../../util' -require_relative '../info/package' -require_relative '../trigger' - -module Build - class RAT - class NightlyPipeline - extend Trigger - - PROJECT_PATH = 'gitlab-org/distribution/reference-architecture-tester'.freeze - - def self.get_project_path - PROJECT_PATH - end - - def self.get_params(image: nil) - { - 'ref' => 'master', - 'token' => Gitlab::Util.get_env('RAT_TRIGGER_TOKEN'), - 'variables[REFERENCE_ARCHITECTURE]' => Gitlab::Util.get_env('RAT_REFERENCE_ARCHITECTURE') || 'omnibus-gitlab-mrs', - 'variables[NIGHTLY]' => "true", - 'variables[PACKAGE_VERSION]' => Build::Info::Package.name_version, - 'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || 'gitlab/gitlab-ee-qa:nightly' - } - end - - def self.get_access_token - # Default to "Multi-pipeline (from 'dev/gitlab/omnibus-gitlab' 'RAT-*' jobs)" at https://gitlab.com/gitlab-org/distribution/reference-architecture-tester/-/settings/access_tokens - Gitlab::Util.get_env('RAT_PROJECT_ACCESS_TOKEN') - end - end - end -end diff --git a/lib/gitlab/build/rat/tag.rb b/lib/gitlab/build/rat/tag.rb deleted file mode 100644 --- a/lib/gitlab/build/rat/tag.rb +++ /dev/null @@ -1,39 +0,0 @@ -require 'cgi' - -require_relative '../../util' -require_relative '../info/package' -require_relative '../trigger' - -module Build - class RAT - class TagPipeline - extend Trigger - - PROJECT_PATH = 'gitlab-org/distribution/reference-architecture-tester'.freeze - - def self.get_project_path - PROJECT_PATH - end - - def self.get_params(image: nil) - { - 'ref' => 'master', - 'token' => Gitlab::Util.get_env('RAT_TRIGGER_TOKEN'), - 'variables[REFERENCE_ARCHITECTURE]' => 'omnibus-gitlab-mrs', - 'variables[PRE_RELEASE]' => "true", - 'variables[PACKAGE_VERSION]' => Build::Info::Package.name_version, - 'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || "dev.gitlab.org:5005/gitlab/gitlab-ee/gitlab-ee-qa:#{version.partition(/\.\d+$/).first}" - } - end - - def self.version - Gitlab::Util.get_env('CI_COMMIT_TAG').tr('+', '-') - end - - def self.get_access_token - # Default to "Multi-pipeline (from 'dev/gitlab/omnibus-gitlab' 'RAT-*' jobs)" at https://gitlab.com/gitlab-org/distribution/reference-architecture-tester/-/settings/access_tokens - Gitlab::Util.get_env('RAT_PROJECT_ACCESS_TOKEN') - end - end - end -end diff --git a/lib/gitlab/tasks/qa.rake b/lib/gitlab/tasks/qa.rake --- a/lib/gitlab/tasks/qa.rake +++ b/lib/gitlab/tasks/qa.rake @@ -7,7 +7,6 @@ require_relative '../build/info/git' require_relative '../build/qa' require_relative '../build/qa_image' -require_relative '../build/rat' require_relative '../docker_operations' require_relative '../util' @@ -111,20 +110,4 @@ end end end - - namespace :rat do - desc "Trigger a RAT pipeline using nightly package" - task :nightly do - Gitlab::Util.section('qa:rat:validate') do - Build::RAT::NightlyPipeline.invoke!.wait!(timeout: 3600 * 4) - end - end - - desc "Trigger a RAT pipeline using tag package" - task :tag do - Gitlab::Util.section('qa:rat:validate') do - Build::RAT::TagPipeline.invoke!.wait!(timeout: 3600 * 4) - end - end - end end diff --git a/spec/lib/gitlab/build/facts_spec.rb b/spec/lib/gitlab/build/facts_spec.rb --- a/spec/lib/gitlab/build/facts_spec.rb +++ b/spec/lib/gitlab/build/facts_spec.rb @@ -242,6 +242,7 @@ allow(described_class).to receive(:generate_knapsack_report?).and_return('true') allow(Build::GitlabImage).to receive(:gitlab_registry_image_address).and_return('registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:14.6.2-rfbranch.450066356.c97110ad-0') allow(Build::Info::Git).to receive(:latest_stable_tag).and_return("14.6.2+rfbranch.450066356") + allow(Build::Info::Package).to receive(:name_version).and_return("gitlab-ee=14.6.2+rfbranch.450066356-0") stub_env_var('QA_IMAGE', 'gitlab/gitlab-ee-qa:nightly') stub_env_var('QA_TESTS', '') @@ -262,6 +263,7 @@ RAT_FIPS_REFERENCE_ARCHITECTURE=omnibus-gitlab-mrs-fips-ubuntu RAT_PACKAGE_URL=https://example.com/gitlab.deb RAT_FIPS_PACKAGE_URL=https://example.com/gitlab-fips.deb + RAT_PACKAGE_VERSION=gitlab-ee=14.6.2+rfbranch.450066356-0 ] expect(described_class.qa_trigger_vars).to eq(result)