diff options
author | Nick Thomas <nick@gitlab.com> | 2016-12-08 16:21:16 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2016-12-15 14:17:58 +0000 |
commit | 80513a129592583ed100e7a90fc9ea144eb62ea9 (patch) | |
tree | 54d78eed2625e5c70b64630e6ab2d39c3adc11bd /app/models | |
parent | 58486918fc12bbcc5139b6ca32461ad5e037497b (diff) | |
download | gitlab-ce-80513a129592583ed100e7a90fc9ea144eb62ea9.tar.gz |
Add $CI_ENVIRONMENT_NAME and $CI_ENVIRONMENT_SLUG
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/ci/build.rb | 20 | ||||
-rw-r--r-- | app/models/environment.rb | 7 |
2 files changed, 25 insertions, 2 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 45a416a4c41..fdbf28a1d68 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -9,6 +9,14 @@ module Ci has_many :deployments, as: :deployable + # The "environment" field for builds is a String, and is the unexpanded name + def persisted_environment + @persisted_environment ||= Environment.find_by( + name: expanded_environment_name, + project_id: gl_project_id + ) + end + serialize :options serialize :yaml_variables @@ -143,7 +151,7 @@ module Ci end def expanded_environment_name - ExpandVariables.expand(environment, variables) if environment + ExpandVariables.expand(environment, simple_variables) if environment end def has_environment? @@ -206,7 +214,8 @@ module Ci slugified.gsub(/[^a-z0-9]/, '-')[0..62] end - def variables + # Variables whose value does not depend on other variables + def simple_variables variables = predefined_variables variables += project.predefined_variables variables += pipeline.predefined_variables @@ -219,6 +228,13 @@ module Ci variables end + # All variables, including those dependent on other variables + def variables + variables = simple_variables + variables += persisted_environment.predefined_variables if persisted_environment.present? + variables + end + def merge_request merge_requests = MergeRequest.includes(:merge_request_diff) .where(source_branch: ref, source_project_id: pipeline.gl_project_id) diff --git a/app/models/environment.rb b/app/models/environment.rb index 0abbf674b9d..8ef1c841ea3 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -50,6 +50,13 @@ class Environment < ActiveRecord::Base state :stopped end + def predefined_variables + [ + { key: 'CI_ENVIRONMENT_NAME', value: name, public: true }, + { key: 'CI_ENVIRONMENT_SLUG', value: slug, public: true }, + ] + end + def recently_updated_on_branch?(ref) ref.to_s == last_deployment.try(:ref) end |