Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/build/rules.rb')
-rw-r--r--lib/gitlab/ci/build/rules.rb22
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/gitlab/ci/build/rules.rb b/lib/gitlab/ci/build/rules.rb
index a500a0cc35d..a39afee194c 100644
--- a/lib/gitlab/ci/build/rules.rb
+++ b/lib/gitlab/ci/build/rules.rb
@@ -6,18 +6,31 @@ module Gitlab
class Rules
include ::Gitlab::Utils::StrongMemoize
- Result = Struct.new(:when, :start_in, :allow_failure) do
- def build_attributes
+ Result = Struct.new(:when, :start_in, :allow_failure, :variables) do
+ def build_attributes(seed_attributes = {})
{
when: self.when,
options: { start_in: start_in }.compact,
- allow_failure: allow_failure
+ allow_failure: allow_failure,
+ yaml_variables: yaml_variables(seed_attributes[:yaml_variables])
}.compact
end
def pass?
self.when != 'never'
end
+
+ private
+
+ def yaml_variables(seed_variables)
+ return unless variables && seed_variables
+
+ indexed_seed_variables = seed_variables.deep_dup.index_by { |var| var[:key] }
+
+ variables.each_with_object(indexed_seed_variables) do |var, hash|
+ hash[var[0].to_s] = { key: var[0].to_s, value: var[1], public: true }
+ end.values
+ end
end
def initialize(rule_hashes, default_when:)
@@ -32,7 +45,8 @@ module Gitlab
Result.new(
matched_rule.attributes[:when] || @default_when,
matched_rule.attributes[:start_in],
- matched_rule.attributes[:allow_failure]
+ matched_rule.attributes[:allow_failure],
+ matched_rule.attributes[:variables]
)
else
Result.new('never')