Use new collections to define build predefined variables

This commit is contained in:
Grzegorz Bizon 2018-03-13 15:38:49 +01:00
parent 769f87eebd
commit 1e811eb8ac

View file

@ -430,14 +430,14 @@ module Ci
end end
def user_variables def user_variables
return [] if user.blank? Gitlab::Ci::Variables::Collection.new.tap do |variables|
return variables if user.blank?
[ variables.append(key: 'GITLAB_USER_ID', value: user.id.to_s)
{ key: 'GITLAB_USER_ID', value: user.id.to_s, public: true }, variables.append(key: 'GITLAB_USER_EMAIL', value: user.email)
{ key: 'GITLAB_USER_EMAIL', value: user.email, public: true }, variables.append(key: 'GITLAB_USER_LOGIN', value: user.username)
{ key: 'GITLAB_USER_LOGIN', value: user.username, public: true }, variables.append(key: 'GITLAB_USER_NAME', value: user.name)
{ key: 'GITLAB_USER_NAME', value: user.name, public: true } end
]
end end
def secret_variables(environment: persisted_environment) def secret_variables(environment: persisted_environment)
@ -540,60 +540,57 @@ module Ci
CI_REGISTRY_USER = 'gitlab-ci-token'.freeze CI_REGISTRY_USER = 'gitlab-ci-token'.freeze
def predefined_variables def predefined_variables
variables = [ Gitlab::Ci::Variables::Collection.new.tap do |variables|
{ key: 'CI', value: 'true', public: true }, variables.append(key: 'CI', value: 'true')
{ key: 'GITLAB_CI', value: 'true', public: true }, variables.append(key: 'GITLAB_CI', value: 'true')
{ key: 'GITLAB_FEATURES', value: project.namespace.features.join(','), public: true }, variables.append(key: 'GITLAB_FEATURES', value: project.namespace.features.join(','))
{ key: 'CI_SERVER_NAME', value: 'GitLab', public: true }, variables.append(key: 'CI_SERVER_NAME', value: 'GitLab')
{ key: 'CI_SERVER_VERSION', value: Gitlab::VERSION, public: true }, variables.append(key: 'CI_SERVER_VERSION', value: Gitlab::VERSION)
{ key: 'CI_SERVER_REVISION', value: Gitlab::REVISION, public: true }, variables.append(key: 'CI_SERVER_REVISION', value: Gitlab::REVISION)
{ key: 'CI_JOB_ID', value: id.to_s, public: true }, variables.append(key: 'CI_JOB_ID', value: id.to_s)
{ key: 'CI_JOB_NAME', value: name, public: true }, variables.append(key: 'CI_JOB_NAME', value: name)
{ key: 'CI_JOB_STAGE', value: stage, public: true }, variables.append(key: 'CI_JOB_STAGE', value: stage)
{ key: 'CI_JOB_TOKEN', value: token, public: false }, variables.append(key: 'CI_JOB_TOKEN', value: token, public: false)
{ key: 'CI_COMMIT_SHA', value: sha, public: true }, variables.append(key: 'CI_COMMIT_SHA', value: sha)
{ key: 'CI_COMMIT_REF_NAME', value: ref, public: true }, variables.append(key: 'CI_COMMIT_REF_NAME', value: ref)
{ key: 'CI_COMMIT_REF_SLUG', value: ref_slug, public: true }, variables.append(key: 'CI_COMMIT_REF_SLUG', value: ref_slug)
{ key: 'CI_REGISTRY_USER', value: CI_REGISTRY_USER, public: true }, variables.append(key: 'CI_REGISTRY_USER', value: CI_REGISTRY_USER)
{ key: 'CI_REGISTRY_PASSWORD', value: token, public: false }, variables.append(key: 'CI_REGISTRY_PASSWORD', value: token, public: false)
{ key: 'CI_REPOSITORY_URL', value: repo_url, public: false } variables.append(key: 'CI_REPOSITORY_URL', value: repo_url, public: false)
] variables.append(key: "CI_COMMIT_TAG", value: ref) if tag?
variables.append(key: "CI_PIPELINE_TRIGGERED", value: 'true') if trigger_request
variables << { key: "CI_COMMIT_TAG", value: ref, public: true } if tag? variables.append(key: "CI_JOB_MANUAL", value: 'true') if action?
variables << { key: "CI_PIPELINE_TRIGGERED", value: 'true', public: true } if trigger_request variables.concat(legacy_variables)
variables << { key: "CI_JOB_MANUAL", value: 'true', public: true } if action? end
variables.concat(legacy_variables)
end end
def persisted_environment_variables def persisted_environment_variables
return [] unless persisted_environment Gitlab::Ci::Variables::Collection.new.tap do |variables|
return variables unless persisted_environment
variables = persisted_environment.predefined_variables variables.concat(persisted_environment.predefined_variables)
# Here we're passing unexpanded environment_url for runner to expand, # Here we're passing unexpanded environment_url for runner to expand,
# and we need to make sure that CI_ENVIRONMENT_NAME and # and we need to make sure that CI_ENVIRONMENT_NAME and
# CI_ENVIRONMENT_SLUG so on are available for the URL be expanded. # CI_ENVIRONMENT_SLUG so on are available for the URL be expanded.
variables << { key: 'CI_ENVIRONMENT_URL', value: environment_url, public: true } if environment_url variables.append(key: 'CI_ENVIRONMENT_URL', value: environment_url) if environment_url
end
variables
end end
def legacy_variables def legacy_variables
variables = [ Gitlab::Ci::Variables::Collection.new.tap do |variables|
{ key: 'CI_BUILD_ID', value: id.to_s, public: true }, variables.append(key: 'CI_BUILD_ID', value: id.to_s)
{ key: 'CI_BUILD_TOKEN', value: token, public: false }, variables.append(key: 'CI_BUILD_TOKEN', value: token, public: false)
{ key: 'CI_BUILD_REF', value: sha, public: true }, variables.append(key: 'CI_BUILD_REF', value: sha)
{ key: 'CI_BUILD_BEFORE_SHA', value: before_sha, public: true }, variables.append(key: 'CI_BUILD_BEFORE_SHA', value: before_sha)
{ key: 'CI_BUILD_REF_NAME', value: ref, public: true }, variables.append(key: 'CI_BUILD_REF_NAME', value: ref)
{ key: 'CI_BUILD_REF_SLUG', value: ref_slug, public: true }, variables.append(key: 'CI_BUILD_REF_SLUG', value: ref_slug)
{ key: 'CI_BUILD_NAME', value: name, public: true }, variables.append(key: 'CI_BUILD_NAME', value: name)
{ key: 'CI_BUILD_STAGE', value: stage, public: true } 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 << { key: "CI_BUILD_TAG", value: ref, public: true } if tag? variables.append(key: "CI_BUILD_MANUAL", value: 'true') if action?
variables << { key: "CI_BUILD_TRIGGERED", value: 'true', public: true } if trigger_request end
variables << { key: "CI_BUILD_MANUAL", value: 'true', public: true } if action?
variables
end end
def environment_url def environment_url