Commit ef030709 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Change kubernetes job policy allowed values

It is now possible to use `kubernetes: configured`.
parent 92673c2c
...@@ -94,12 +94,11 @@ module Ci ...@@ -94,12 +94,11 @@ module Ci
except_kubernetes = job.dig(:except, :kubernetes) except_kubernetes = job.dig(:except, :kubernetes)
[!only_kubernetes && !except_kubernetes, [!only_kubernetes && !except_kubernetes,
only_kubernetes && has_kubernetes, only_kubernetes && has_kubernetes,
except_kubernetes && !has_kubernetes].any? except_kubernetes && !has_kubernetes].any?
end end
end end
def jobs_for_ref(ref, tag = false, source = nil) def jobs_for_ref(ref, tag = false, source = nil)
@jobs.select do |_, job| @jobs.select do |_, job|
process?(job.dig(:only, :refs), job.dig(:except, :refs), ref, tag, source) process?(job.dig(:only, :refs), job.dig(:except, :refs), ref, tag, source)
......
...@@ -33,7 +33,7 @@ module Gitlab ...@@ -33,7 +33,7 @@ module Gitlab
with_options allow_nil: true do with_options allow_nil: true do
validates :refs, array_of_strings_or_regexps: true validates :refs, array_of_strings_or_regexps: true
validates :kubernetes, inclusion: { in: [true] } validates :kubernetes, allowed_values: %w[configured]
end end
end end
end end
......
...@@ -14,6 +14,14 @@ module Gitlab ...@@ -14,6 +14,14 @@ module Gitlab
end end
end end
class AllowedValuesValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless options[:in].include?(value.to_s)
record.errors.add(attribute, "unknown value: #{value}")
end
end
end
class ArrayOfStringsValidator < ActiveModel::EachValidator class ArrayOfStringsValidator < ActiveModel::EachValidator
include LegacyValidationHelpers include LegacyValidationHelpers
......
...@@ -172,7 +172,7 @@ module Ci ...@@ -172,7 +172,7 @@ module Ci
YAML.dump( YAML.dump(
spinach: { stage: 'test', script: 'spinach' }, spinach: { stage: 'test', script: 'spinach' },
production: { stage: 'deploy', script: 'cap', only: { production: { stage: 'deploy', script: 'cap', only: {
kubernetes: true } } kubernetes: 'configured' } }
) )
end end
......
...@@ -56,6 +56,50 @@ describe Gitlab::Ci::Config::Entry::Policy do ...@@ -56,6 +56,50 @@ describe Gitlab::Ci::Config::Entry::Policy do
end end
end end
context 'when using complex policy' do
context 'when specifiying refs policy' do
let(:config) { { refs: ['master'] } }
it 'is a correct configuraton' do
expect(entry).to be_valid
expect(entry.value).to eq(refs: %w[master])
end
end
context 'when specifying kubernetes policy' do
let(:config) { { kubernetes: 'configured' } }
it 'is a correct configuraton' do
expect(entry).to be_valid
expect(entry.value).to eq(kubernetes: 'configured')
end
end
context 'when specifying invalid kubernetes policy' do
let(:config) { { kubernetes: 'active' } }
it 'reports an error about invalid policy' do
expect(entry.errors).to include /unknown value: active/
end
end
context 'when specifying unknown policy' do
let(:config) { { refs: ['master'], invalid: :something } }
it 'returns error about invalid key' do
expect(entry.errors).to include /unknown keys: invalid/
end
end
context 'when policy is empty' do
let(:config) { {} }
it 'is not a valid configuration' do
expect(entry.errors).to include /can't be blank/
end
end
end
context 'when policy strategy does not match' do context 'when policy strategy does not match' do
let(:config) { 'string strategy' } let(:config) { 'string strategy' }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment