diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_LmdpdGxhYi1jaS55bWw=..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_LmdpdGxhYi1jaS55bWw= 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -83,7 +83,7 @@ before_script: - export CE_ONLY=(Raspberry) - - export EE_ONLY=(SLES HA-Validate) + - export EE_ONLY=(SLES HA-Validate RAT) - for job in "${CE_ONLY[@]}"; do if [[ "${CI_JOB_NAME}" =~ ${job} ]]; then if ./support/is_gitlab_ee.sh; then diff --git a/doc/development/ci-variables.md b/doc/development/ci-variables.md index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_ZG9jL2RldmVsb3BtZW50L2NpLXZhcmlhYmxlcy5tZA==..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_ZG9jL2RldmVsb3BtZW50L2NpLXZhcmlhYmxlcy5tZA== 100644 --- a/doc/development/ci-variables.md +++ b/doc/development/ci-variables.md @@ -49,6 +49,7 @@ | Environment Variable | Description | | --------------------------------------------- | ----------- | | HA_VALIDATE_TOKEN | Trigger token for the HA Validate pipeline. | +| RAT_TRIGGER_TOKEN | Trigger token for the RAT pipeline. | | GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN | Trigger token for building a test package. | | CVEIGNORE | See document on [dependencies being reported as vulnerable](broken_master.md). | | CI_SLACK_WEBHOOK_URL | Webhook URL for Slack failure notifications. | diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_ZG9jL2RldmVsb3BtZW50L3BpcGVsaW5lcy5tZA==..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_ZG9jL2RldmVsb3BtZW50L3BpcGVsaW5lcy5tZA== 100644 --- a/doc/development/pipelines.md +++ b/doc/development/pipelines.md @@ -275,6 +275,17 @@ This job is run only on [QA mirror](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror) on triggered pipelines. +#### `Trigger:RAT` + +This manual job triggers a pipeline in the +[RAT](https://gitlab.com/gitlab-org/distribution/reference-architecture-tester) +project passing the URL to the package built by `Trigger:package` job, which +will spin up a PostgreSQL HA instance with that package using +[GET](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit), and run +QA against that instance. + +This job is run only on [QA mirror](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror) on triggered EE pipelines. + #### `<OS_NAME>-branch` These jobs build packages for the specified OS, and pushes the resultant package @@ -420,6 +431,28 @@ This job is run only on [Release mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab) on tag pipelines. +### `RAT-Nightly` + +This job triggers a pipeline in the +[RAT](https://gitlab.com/gitlab-org/distribution/reference-architecture-tester) +project passing the URL to the nightly Ubuntu 20.04 package built in this pipeline, +which will spin up a PostgreSQL HA instance with that package using +[GET](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit), and run +QA against that instance. + +This job is run only on [Release mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab) on nightly pipelines. + +### `RAT-Tag` + +This job triggers a pipeline in the +[RAT](https://gitlab.com/gitlab-org/distribution/reference-architecture-tester) +project passing the URL to the Ubuntu 20.04 package built in this pipeline, +which will spin up a PostgreSQL HA instance with that package using +[GET](https://gitlab.com/gitlab-org/quality/gitlab-environment-toolkit), and run +QA against that instance. + +This job is run only on [Release mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab) on EE tag pipelines. + ### `license-upload` This job compiles the license information of all the dependencies from the diff --git a/gitlab-ci-config/dev-gitlab-org.yml b/gitlab-ci-config/dev-gitlab-org.yml index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_Z2l0bGFiLWNpLWNvbmZpZy9kZXYtZ2l0bGFiLW9yZy55bWw=..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_Z2l0bGFiLWNpLWNvbmZpZy9kZXYtZ2l0bGFiLW9yZy55bWw= 100644 --- a/gitlab-ci-config/dev-gitlab-org.yml +++ b/gitlab-ci-config/dev-gitlab-org.yml @@ -606,6 +606,17 @@ cache: *branch-cache dependencies: [] +RAT-Nightly: + stage: slow_jobs + image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_16.04:${BUILDER_IMAGE_REVISION}" + script: + - '[[ -n "${NIGHTLY}" ]] || exit 0' + - bundle exec rake qa:rat:nightly + <<: *dev-ee-nightly-only + cache: *branch-cache + dependencies: [] + allow_failure: true + ############################ # Release pipeline # ############################ @@ -1011,6 +1022,16 @@ dependencies: [] allow_failure: true +RAT-Tag: + stage: slow_jobs + image: "dev.gitlab.org:5005/cookbooks/gitlab-omnibus-builder/ubuntu_16.04:${BUILDER_IMAGE_REVISION}" + script: + - bundle exec rake qa:rat:tag + <<: *dev-ee-tag-only + cache: *tag-cache + dependencies: [] + allow_failure: true + Raspberry-Pi-2-Buster: image: "${BUILDER_IMAGE_REGISTRY}/rpi_10:${BUILDER_IMAGE_REVISION}" <<: *rpi_tag_build diff --git a/lib/gitlab/build/rat.rb b/lib/gitlab/build/rat.rb index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_bGliL2dpdGxhYi9idWlsZC9yYXQucmI=..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi9idWlsZC9yYXQucmI= 100644 --- a/lib/gitlab/build/rat.rb +++ b/lib/gitlab/build/rat.rb @@ -1,1 +1,3 @@ require_relative 'rat/trigger' +require_relative 'rat/nightly' +require_relative 'rat/tag' diff --git a/lib/gitlab/build/rat/nightly.rb b/lib/gitlab/build/rat/nightly.rb new file mode 100644 index 0000000000000000000000000000000000000000..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi9idWlsZC9yYXQvbmlnaHRseS5yYg== --- /dev/null +++ b/lib/gitlab/build/rat/nightly.rb @@ -0,0 +1,36 @@ +require_relative '../trigger' +require_relative '../info' +require_relative "../../util" +require 'cgi' + +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.omnibus_gitlab_path + CGI.escape(Build::Info::OMNIBUS_PROJECT_MIRROR_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[PACKAGE_URL]' => Gitlab::Util.get_env('PACKAGE_URL') || Build::Info.package_download_url, + 'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || 'gitlab/gitlab-ee-qa:nightly' + } + end + + def self.get_access_token + Gitlab::Util.get_env('GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN') + end + end + end +end diff --git a/lib/gitlab/build/rat/tag.rb b/lib/gitlab/build/rat/tag.rb new file mode 100644 index 0000000000000000000000000000000000000000..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi9idWlsZC9yYXQvdGFnLnJi --- /dev/null +++ b/lib/gitlab/build/rat/tag.rb @@ -0,0 +1,40 @@ +require_relative '../trigger' +require_relative '../info' +require_relative "../../util" +require 'cgi' + +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.omnibus_gitlab_path + CGI.escape(Build::Info::OMNIBUS_PROJECT_MIRROR_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[PACKAGE_URL]' => Gitlab::Util.get_env('PACKAGE_URL') || Build::Info.package_download_url, + 'variables[QA_IMAGE]' => Gitlab::Util.get_env('QA_IMAGE') || image || "dev.gitlab.org:5005/gitlab/omnibus-gitlab/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 + Gitlab::Util.get_env('GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN') + end + end + end +end diff --git a/lib/gitlab/tasks/qa.rake b/lib/gitlab/tasks/qa.rake index 3677b5adaa12d73ae12d070ce5984e38cc4b3ba7_bGliL2dpdGxhYi90YXNrcy9xYS5yYWtl..24e3a0d6a7fc72b48b520a0d2895a6a728f0f963_bGliL2dpdGxhYi90YXNrcy9xYS5yYWtl 100644 --- a/lib/gitlab/tasks/qa.rake +++ b/lib/gitlab/tasks/qa.rake @@ -121,5 +121,19 @@ Build::RAT::TriggerPipeline.invoke!.wait!(timeout: 3600 * 4) end end + + 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