diff options
Diffstat (limited to 'lib/gitlab/ci/config')
-rw-r--r-- | lib/gitlab/ci/config/entry/global.rb | 9 | ||||
-rw-r--r-- | lib/gitlab/ci/config/entry/job.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/ci/config/entry/policy.rb | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/lib/gitlab/ci/config/entry/global.rb b/lib/gitlab/ci/config/entry/global.rb index dbad77e59c4..c85f68c0911 100644 --- a/lib/gitlab/ci/config/entry/global.rb +++ b/lib/gitlab/ci/config/entry/global.rb @@ -43,8 +43,15 @@ module Gitlab description: 'Configure caching between build jobs.', inherit: true + entry :only, Entry::Policy, + description: 'Refs policy this job will be executed for.', + default: Entry::Policy::DEFAULT_GLOBAL_ONLY + + entry :except, Entry::Policy, + description: 'Refs policy this job will be executed for.' + helpers :before_script, :image, :services, :after_script, - :variables, :stages, :types, :cache + :variables, :stages, :types, :cache, :only, :except def compose!(deps = nil) super(self) do diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index 623ce94e49c..f46083935cf 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -71,8 +71,7 @@ module Gitlab inherit: true entry :only, Entry::Policy, - description: 'Refs policy this job will be executed for.', - default: Entry::Policy::DEFAULT_ONLY + description: 'Refs policy this job will be executed for.' entry :except, Entry::Policy, description: 'Refs policy this job will be executed for.' @@ -137,10 +136,13 @@ module Gitlab def inherit!(deps) return unless deps + @global_only = deps.global[:only] + @global_except = deps.global[:except] + self.class.nodes.each do |key, factory| next unless factory.inheritable? - global_entry = deps[:global][key] + global_entry = deps.global[key] job_entry = self[key] if global_entry.specified? && !job_entry.specified? @@ -157,6 +159,8 @@ module Gitlab services: services_value, stage: stage_value, cache: cache_value, + global_only: @global_only.value, + global_except: @global_except.value, only: only_value, except: except_value, variables: variables_defined? ? variables_value : nil, diff --git a/lib/gitlab/ci/config/entry/policy.rb b/lib/gitlab/ci/config/entry/policy.rb index 7b14218d3ea..4a408e92645 100644 --- a/lib/gitlab/ci/config/entry/policy.rb +++ b/lib/gitlab/ci/config/entry/policy.rb @@ -11,7 +11,7 @@ module Gitlab strategy :RefsPolicy, if: -> (config) { config.is_a?(Array) } strategy :ComplexPolicy, if: -> (config) { config.is_a?(Hash) } - DEFAULT_ONLY = { refs: %w[branches tags] }.freeze + DEFAULT_GLOBAL_ONLY = { refs: %w[branches tags] }.freeze class RefsPolicy < ::Gitlab::Config::Entry::Node include ::Gitlab::Config::Entry::Validatable |