Extract build variables that depend on persistence
This commit is contained in:
parent
5501dfd13f
commit
1a84f96a06
|
@ -292,7 +292,9 @@ module Ci
|
||||||
# All variables, including persisted environment variables.
|
# All variables, including persisted environment variables.
|
||||||
#
|
#
|
||||||
def variables
|
def variables
|
||||||
scoped_variables
|
Gitlab::Ci::Variables::Collection.new
|
||||||
|
.concat(persisted_variables)
|
||||||
|
.concat(scoped_variables)
|
||||||
.concat(persisted_environment_variables)
|
.concat(persisted_environment_variables)
|
||||||
.to_runner_variables
|
.to_runner_variables
|
||||||
end
|
end
|
||||||
|
@ -579,6 +581,21 @@ module Ci
|
||||||
|
|
||||||
CI_REGISTRY_USER = 'gitlab-ci-token'.freeze
|
CI_REGISTRY_USER = 'gitlab-ci-token'.freeze
|
||||||
|
|
||||||
|
def persisted_variables
|
||||||
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
||||||
|
return variables unless persisted?
|
||||||
|
|
||||||
|
variables
|
||||||
|
.append(key: 'CI_JOB_ID', value: id.to_s)
|
||||||
|
.append(key: 'CI_JOB_TOKEN', value: token, public: false)
|
||||||
|
.append(key: 'CI_BUILD_ID', value: id.to_s)
|
||||||
|
.append(key: 'CI_BUILD_TOKEN', value: token, public: false)
|
||||||
|
.append(key: 'CI_REGISTRY_USER', value: CI_REGISTRY_USER)
|
||||||
|
.append(key: 'CI_REGISTRY_PASSWORD', value: token, public: false)
|
||||||
|
.append(key: 'CI_REPOSITORY_URL', value: repo_url, public: false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def predefined_variables
|
def predefined_variables
|
||||||
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
||||||
variables.append(key: 'CI', value: 'true')
|
variables.append(key: 'CI', value: 'true')
|
||||||
|
@ -587,16 +604,11 @@ module Ci
|
||||||
variables.append(key: 'CI_SERVER_NAME', value: 'GitLab')
|
variables.append(key: 'CI_SERVER_NAME', value: 'GitLab')
|
||||||
variables.append(key: 'CI_SERVER_VERSION', value: Gitlab::VERSION)
|
variables.append(key: 'CI_SERVER_VERSION', value: Gitlab::VERSION)
|
||||||
variables.append(key: 'CI_SERVER_REVISION', value: Gitlab::REVISION)
|
variables.append(key: 'CI_SERVER_REVISION', value: Gitlab::REVISION)
|
||||||
variables.append(key: 'CI_JOB_ID', value: id.to_s) if persisted?
|
|
||||||
variables.append(key: 'CI_JOB_NAME', value: name)
|
variables.append(key: 'CI_JOB_NAME', value: name)
|
||||||
variables.append(key: 'CI_JOB_STAGE', value: stage)
|
variables.append(key: 'CI_JOB_STAGE', value: stage)
|
||||||
variables.append(key: 'CI_JOB_TOKEN', value: token, public: false) if persisted?
|
|
||||||
variables.append(key: 'CI_COMMIT_SHA', value: sha)
|
variables.append(key: 'CI_COMMIT_SHA', value: sha)
|
||||||
variables.append(key: 'CI_COMMIT_REF_NAME', value: ref)
|
variables.append(key: 'CI_COMMIT_REF_NAME', value: ref)
|
||||||
variables.append(key: 'CI_COMMIT_REF_SLUG', value: ref_slug)
|
variables.append(key: 'CI_COMMIT_REF_SLUG', value: ref_slug)
|
||||||
variables.append(key: 'CI_REGISTRY_USER', value: CI_REGISTRY_USER) if persisted?
|
|
||||||
variables.append(key: 'CI_REGISTRY_PASSWORD', value: token, public: false) if persisted?
|
|
||||||
variables.append(key: 'CI_REPOSITORY_URL', value: repo_url, public: false) if persisted?
|
|
||||||
variables.append(key: "CI_COMMIT_TAG", value: ref) if tag?
|
variables.append(key: "CI_COMMIT_TAG", value: ref) if tag?
|
||||||
variables.append(key: "CI_PIPELINE_TRIGGERED", value: 'true') if trigger_request
|
variables.append(key: "CI_PIPELINE_TRIGGERED", value: 'true') if trigger_request
|
||||||
variables.append(key: "CI_JOB_MANUAL", value: 'true') if action?
|
variables.append(key: "CI_JOB_MANUAL", value: 'true') if action?
|
||||||
|
@ -604,6 +616,20 @@ module Ci
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def legacy_variables
|
||||||
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
||||||
|
variables.append(key: 'CI_BUILD_REF', value: sha)
|
||||||
|
variables.append(key: 'CI_BUILD_BEFORE_SHA', value: before_sha)
|
||||||
|
variables.append(key: 'CI_BUILD_REF_NAME', value: ref)
|
||||||
|
variables.append(key: 'CI_BUILD_REF_SLUG', value: ref_slug)
|
||||||
|
variables.append(key: 'CI_BUILD_NAME', value: name)
|
||||||
|
variables.append(key: 'CI_BUILD_STAGE', value: stage)
|
||||||
|
variables.append(key: "CI_BUILD_TAG", value: ref) if tag?
|
||||||
|
variables.append(key: "CI_BUILD_TRIGGERED", value: 'true') if trigger_request
|
||||||
|
variables.append(key: "CI_BUILD_MANUAL", value: 'true') if action?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def persisted_environment_variables
|
def persisted_environment_variables
|
||||||
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
||||||
return variables unless persisted? && persisted_environment.present?
|
return variables unless persisted? && persisted_environment.present?
|
||||||
|
@ -617,25 +643,6 @@ module Ci
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def legacy_variables
|
|
||||||
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
|
||||||
if persisted?
|
|
||||||
variables.append(key: 'CI_BUILD_ID', value: id.to_s)
|
|
||||||
variables.append(key: 'CI_BUILD_TOKEN', value: token, public: false)
|
|
||||||
end
|
|
||||||
|
|
||||||
variables.append(key: 'CI_BUILD_REF', value: sha)
|
|
||||||
variables.append(key: 'CI_BUILD_BEFORE_SHA', value: before_sha)
|
|
||||||
variables.append(key: 'CI_BUILD_REF_NAME', value: ref)
|
|
||||||
variables.append(key: 'CI_BUILD_REF_SLUG', value: ref_slug)
|
|
||||||
variables.append(key: 'CI_BUILD_NAME', value: name)
|
|
||||||
variables.append(key: 'CI_BUILD_STAGE', value: stage)
|
|
||||||
variables.append(key: "CI_BUILD_TAG", value: ref) if tag?
|
|
||||||
variables.append(key: "CI_BUILD_TRIGGERED", value: 'true') if trigger_request
|
|
||||||
variables.append(key: "CI_BUILD_MANUAL", value: 'true') if action?
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def environment_url
|
def environment_url
|
||||||
options&.dig(:environment, :url) || persisted_environment&.external_url
|
options&.dig(:environment, :url) || persisted_environment&.external_url
|
||||||
end
|
end
|
||||||
|
|
|
@ -1463,24 +1463,24 @@ describe Ci::Build do
|
||||||
let(:container_registry_enabled) { false }
|
let(:container_registry_enabled) { false }
|
||||||
let(:predefined_variables) do
|
let(:predefined_variables) do
|
||||||
[
|
[
|
||||||
|
{ key: 'CI_JOB_ID', value: build.id.to_s, public: true },
|
||||||
|
{ key: 'CI_JOB_TOKEN', value: build.token, public: false },
|
||||||
|
{ key: 'CI_BUILD_ID', value: build.id.to_s, public: true },
|
||||||
|
{ key: 'CI_BUILD_TOKEN', value: build.token, public: false },
|
||||||
|
{ key: 'CI_REGISTRY_USER', value: 'gitlab-ci-token', public: true },
|
||||||
|
{ key: 'CI_REGISTRY_PASSWORD', value: build.token, public: false },
|
||||||
|
{ key: 'CI_REPOSITORY_URL', value: build.repo_url, public: false },
|
||||||
{ key: 'CI', value: 'true', public: true },
|
{ key: 'CI', value: 'true', public: true },
|
||||||
{ key: 'GITLAB_CI', value: 'true', public: true },
|
{ key: 'GITLAB_CI', value: 'true', public: true },
|
||||||
{ key: 'GITLAB_FEATURES', value: project.namespace.features.join(','), public: true },
|
{ key: 'GITLAB_FEATURES', value: project.namespace.features.join(','), public: true },
|
||||||
{ key: 'CI_SERVER_NAME', value: 'GitLab', public: true },
|
{ key: 'CI_SERVER_NAME', value: 'GitLab', public: true },
|
||||||
{ key: 'CI_SERVER_VERSION', value: Gitlab::VERSION, public: true },
|
{ key: 'CI_SERVER_VERSION', value: Gitlab::VERSION, public: true },
|
||||||
{ key: 'CI_SERVER_REVISION', value: Gitlab::REVISION, public: true },
|
{ key: 'CI_SERVER_REVISION', value: Gitlab::REVISION, public: true },
|
||||||
{ key: 'CI_JOB_ID', value: build.id.to_s, public: true },
|
|
||||||
{ key: 'CI_JOB_NAME', value: 'test', public: true },
|
{ key: 'CI_JOB_NAME', value: 'test', public: true },
|
||||||
{ key: 'CI_JOB_STAGE', value: 'test', public: true },
|
{ key: 'CI_JOB_STAGE', value: 'test', public: true },
|
||||||
{ key: 'CI_JOB_TOKEN', value: build.token, public: false },
|
|
||||||
{ key: 'CI_COMMIT_SHA', value: build.sha, public: true },
|
{ key: 'CI_COMMIT_SHA', value: build.sha, public: true },
|
||||||
{ key: 'CI_COMMIT_REF_NAME', value: build.ref, public: true },
|
{ key: 'CI_COMMIT_REF_NAME', value: build.ref, public: true },
|
||||||
{ key: 'CI_COMMIT_REF_SLUG', value: build.ref_slug, public: true },
|
{ key: 'CI_COMMIT_REF_SLUG', value: build.ref_slug, public: true },
|
||||||
{ key: 'CI_REGISTRY_USER', value: 'gitlab-ci-token', public: true },
|
|
||||||
{ key: 'CI_REGISTRY_PASSWORD', value: build.token, public: false },
|
|
||||||
{ key: 'CI_REPOSITORY_URL', value: build.repo_url, public: false },
|
|
||||||
{ key: 'CI_BUILD_ID', value: build.id.to_s, public: true },
|
|
||||||
{ key: 'CI_BUILD_TOKEN', value: build.token, public: false },
|
|
||||||
{ key: 'CI_BUILD_REF', value: build.sha, public: true },
|
{ key: 'CI_BUILD_REF', value: build.sha, public: true },
|
||||||
{ key: 'CI_BUILD_BEFORE_SHA', value: build.before_sha, public: true },
|
{ key: 'CI_BUILD_BEFORE_SHA', value: build.before_sha, public: true },
|
||||||
{ key: 'CI_BUILD_REF_NAME', value: build.ref, public: true },
|
{ key: 'CI_BUILD_REF_NAME', value: build.ref, public: true },
|
||||||
|
@ -1945,6 +1945,7 @@ describe Ci::Build do
|
||||||
before do
|
before do
|
||||||
allow(build).to receive(:predefined_variables) { [build_pre_var] }
|
allow(build).to receive(:predefined_variables) { [build_pre_var] }
|
||||||
allow(build).to receive(:yaml_variables) { [build_yaml_var] }
|
allow(build).to receive(:yaml_variables) { [build_yaml_var] }
|
||||||
|
allow(build).to receive(:persisted_variables) { [] }
|
||||||
|
|
||||||
allow_any_instance_of(Project)
|
allow_any_instance_of(Project)
|
||||||
.to receive(:predefined_variables) { [project_pre_var] }
|
.to receive(:predefined_variables) { [project_pre_var] }
|
||||||
|
|
Loading…
Reference in New Issue