diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b3632046d62e24e1687b01c9633505475f17aec5_LmdpdGxhYi1jaS55bWw=..1659a47a6f6f538d5134ebfa639935756753c4c0_LmdpdGxhYi1jaS55bWw= 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -184,10 +184,12 @@ reports: dotenv: build_facts/env_vars rules: - # Run on dev.gitlab.org and multi-project pipelines on omnibus-gitlab-mirror - - if: '$CI_PROJECT_PATH == "gitlab/omnibus-gitlab"' - - if: '$CI_PIPELINE_SOURCE == "pipeline" && $CI_PROJECT_PATH == "gitlab-org/build/omnibus-gitlab-mirror"' - - if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_PATH == "gitlab-org/build/omnibus-gitlab-mirror"' + - if: '$DEPS_PIPELINE || $CACHE_UPDATE || $DEPENDENCY_SCANNING' + when: never + - if: '$CI_BRANCH_NAME =~ /^[0-9]+-[0-9]+-auto-deploy-[0-9]+$/ || $CI_BRANCH_NAME =~ /^deps/' + when: never + - when: always + needs: [] include: - '/gitlab-ci-config/gitlab-com.yml' diff --git a/gitlab-ci-config/gitlab-com.yml b/gitlab-ci-config/gitlab-com.yml index b3632046d62e24e1687b01c9633505475f17aec5_Z2l0bGFiLWNpLWNvbmZpZy9naXRsYWItY29tLnltbA==..1659a47a6f6f538d5134ebfa639935756753c4c0_Z2l0bGFiLWNpLWNvbmZpZy9naXRsYWItY29tLnltbA== 100644 --- a/gitlab-ci-config/gitlab-com.yml +++ b/gitlab-ci-config/gitlab-com.yml @@ -27,6 +27,12 @@ - $DEPS_PIPELINE || $CACHE_UPDATE || $DEPENDENCY_SCANNING - $CI_COMMIT_REF_NAME =~ /^[0-9]+-[0-9]+-auto-deploy-[0-9]+$/ +.com-branches-except-trigger: &com-branches-except-trigger + only: + - branches@gitlab-org/omnibus-gitlab + - branches@gitlab-org/security/omnibus-gitlab + <<: *com-except-triggers + .com-trigger-only: &com-trigger-only only: - triggers@gitlab-org/build/omnibus-gitlab-mirror @@ -135,6 +141,4 @@ retry: 1 .trigger-job: - extends: .gems-cache - image: "${RUBY_IMAGE}" stage: trigger-package @@ -140,2 +144,21 @@ stage: trigger-package + inherit: + variables: false + variables: + ALTERNATIVE_SOURCES: 'true' + BUILDER_IMAGE_REVISION: ${BUILDER_IMAGE_REVISION} + BUILDER_IMAGE_REGISTRY: ${BUILDER_IMAGE_REGISTRY} + PUBLIC_BUILDER_IMAGE_REGISTRY: ${PUBLIC_BUILDER_IMAGE_REGISTRY} + COMPILE_ASSETS: ${COMPILE_ASSETS} + GITLAB_VERSION: ${GITLAB_VERSION} + GITLAB_SHELL_VERSION: ${GITLAB_SHELL_VERSION} + GITLAB_PAGES_VERSION: ${GITLAB_PAGES_VERSION} + GITALY_VERSION: ${GITALY_SERVER_VERSION} + GITLAB_ELASTICSEARCH_INDEXER_VERSION: ${GITLAB_ELASTICSEARCH_INDEXER_VERSION} + GITLAB_KAS_VERSION: ${GITLAB_KAS_VERSION} + TOP_UPSTREAM_SOURCE_PROJECT: ${TOP_UPSTREAM_SOURCE_PROJECT} + TOP_UPSTREAM_SOURCE_JOB: ${TOP_UPSTREAM_SOURCE_JOB} + TOP_UPSTREAM_SOURCE_SHA: ${TOP_UPSTREAM_SOURCE_SHA} + TOP_UPSTREAM_SOURCE_REF: ${TOP_UPSTREAM_SOURCE_REF} + QA_BRANCH: ${QA_BRANCH} when: manual @@ -141,22 +164,16 @@ when: manual - script: - - support/wait_for_sha - - bundle exec rake build:trigger - only: - - branches@gitlab-org/omnibus-gitlab - - branches@gitlab-org/security/omnibus-gitlab - except: - refs: - - triggers - - /^deps/ - - /(^docs[\/-].*|.*-docs$)/ - variables: - - $DEPS_PIPELINE || $CACHE_UPDATE || $DEPENDENCY_SCANNING - - $CI_COMMIT_REF_NAME =~ /^[0-9]+-[0-9]+-auto-deploy-[0-9]+$/ - needs: [] - timeout: 3h + trigger: + project: 'gitlab-org/build/omnibus-gitlab-mirror' + branch: $CI_COMMIT_REF_NAME + strategy: depend + <<: *com-branches-except-trigger + needs: + - job: generate-facts + artifacts: true + - job: check-for-sha-in-mirror + artifacts: false .trigger-pipeline: stage: trigger-qa image: "${RUBY_IMAGE}" when: manual @@ -158,8 +175,9 @@ .trigger-pipeline: stage: trigger-qa image: "${RUBY_IMAGE}" when: manual + allow_failure: true <<: *com-trigger-only needs: - job: Trigger:package @@ -244,6 +262,16 @@ # Branch pipeline # ########################### +check-for-sha-in-mirror: + extends: .gems-cache + stage: check + image: "${RUBY_IMAGE}" + script: + - support/wait_for_sha + <<: *com-branches-except-trigger + timeout: 3h + needs: [] + Trigger:ce-package: extends: .trigger-job @@ -446,7 +474,6 @@ image: "${BUILDER_IMAGE_REGISTRY}/ubuntu_20.04:${BUILDER_IMAGE_REVISION}" stage: trigger-package script: - - if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE"; fi - *build-package # Renaming so we can easily generate the artifact URL - mv pkg/ubuntu-focal/*.deb pkg/ubuntu-focal/gitlab.deb @@ -484,7 +511,6 @@ - .gems-cache stage: trigger-docker script: - - if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE"; fi - bundle exec rake docker:build:image - bundle exec rake docker:push:triggered <<: *com-trigger-only @@ -501,7 +527,6 @@ - .gems-cache stage: trigger-docker script: - - if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE"; fi - bundle exec rake qa:build - bundle exec rake qa:push:triggered <<: *com-trigger-only @@ -551,7 +576,6 @@ extends: .docker_job stage: trigger-qa script: - - if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE"; fi - echo "${CI_REGISTRY_PASSWORD}" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose @@ -565,6 +589,7 @@ stage: trigger-qa image: "${RUBY_IMAGE}" when: manual + allow_failure: true script: - bundle exec rake qa:rat:trigger <<: *com-trigger-only diff --git a/lib/gitlab/build/facts.rb b/lib/gitlab/build/facts.rb index b3632046d62e24e1687b01c9633505475f17aec5_bGliL2dpdGxhYi9idWlsZC9mYWN0cy5yYg==..1659a47a6f6f538d5134ebfa639935756753c4c0_bGliL2dpdGxhYi9idWlsZC9mYWN0cy5yYg== 100644 --- a/lib/gitlab/build/facts.rb +++ b/lib/gitlab/build/facts.rb @@ -20,9 +20,10 @@ env_vars = [] env_vars += common_vars env_vars += qa_trigger_vars + env_vars += omnibus_trigger_vars File.write("build_facts/env_vars", env_vars.join("\n")) end def common_vars %W[ @@ -23,13 +24,13 @@ File.write("build_facts/env_vars", env_vars.join("\n")) end def common_vars %W[ - TOP_UPSTREAM_SOURCE_PROJECT=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_PROJECT')} - TOP_UPSTREAM_SOURCE_REF=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_REF')} - TOP_UPSTREAM_SOURCE_JOB=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_JOB')} - TOP_UPSTREAM_SOURCE_SHA=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_SHA')} + TOP_UPSTREAM_SOURCE_PROJECT=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_PROJECT') || Gitlab::Util.get_env('CI_PROJECT_PATH')} + TOP_UPSTREAM_SOURCE_REF=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_REF') || Gitlab::Util.get_env('CI_COMMIT_REF_NAME')} + TOP_UPSTREAM_SOURCE_JOB=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_JOB') || Gitlab::Util.get_env('CI_JOB_URL')} + TOP_UPSTREAM_SOURCE_SHA=#{Gitlab::Util.get_env('TOP_UPSTREAM_SOURCE_SHA') || Gitlab::Util.get_env('CI_COMMIT_SHA')} TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID=#{Gitlab::Util.get_env('TOP_UPSTREAM_MERGE_REQUEST_PROJECT_ID')} TOP_UPSTREAM_MERGE_REQUEST_IID=#{Gitlab::Util.get_env('TOP_UPSTREAM_MERGE_REQUEST_IID')} ] @@ -47,6 +48,16 @@ ] end + def omnibus_trigger_vars + version_vars + end + + def version_vars + Gitlab::Version::COMPONENTS_ENV_VARS.values.uniq.map do |version| + "#{version}=#{Gitlab::Util.get_env(version)}" + end + end + private def generate_knapsack_report? diff --git a/lib/gitlab/util.rb b/lib/gitlab/util.rb index b3632046d62e24e1687b01c9633505475f17aec5_bGliL2dpdGxhYi91dGlsLnJi..1659a47a6f6f538d5134ebfa639935756753c4c0_bGliL2dpdGxhYi91dGlsLnJi 100644 --- a/lib/gitlab/util.rb +++ b/lib/gitlab/util.rb @@ -2,7 +2,9 @@ class Util class << self def get_env(key) - ENV[key]&.strip + value = ENV[key]&.strip + + value unless value&.empty? end def set_env(key, value) diff --git a/spec/gitlab/build/facts_spec.rb b/spec/gitlab/build/facts_spec.rb index b3632046d62e24e1687b01c9633505475f17aec5_c3BlYy9naXRsYWIvYnVpbGQvZmFjdHNfc3BlYy5yYg==..1659a47a6f6f538d5134ebfa639935756753c4c0_c3BlYy9naXRsYWIvYnVpbGQvZmFjdHNfc3BlYy5yYg== 100644 --- a/spec/gitlab/build/facts_spec.rb +++ b/spec/gitlab/build/facts_spec.rb @@ -34,6 +34,7 @@ before do allow(described_class).to receive(:common_vars).and_return(%w[TOP_UPSTREAM_SOURCE_PROJECT=gitlab-org/gitlab]) allow(described_class).to receive(:qa_trigger_vars).and_return(%w[QA_RELEASE=foobar]) + allow(described_class).to receive(:version_vars).and_return(%w[GITLAB_VERSION=randombranch]) end it 'writes environment variables to file' do @@ -37,7 +38,7 @@ end it 'writes environment variables to file' do - expect(File).to receive(:write).with('build_facts/env_vars', "TOP_UPSTREAM_SOURCE_PROJECT=gitlab-org/gitlab\nQA_RELEASE=foobar") + expect(File).to receive(:write).with('build_facts/env_vars', "TOP_UPSTREAM_SOURCE_PROJECT=gitlab-org/gitlab\nQA_RELEASE=foobar\nGITLAB_VERSION=randombranch") described_class.generate_env_file end