Ignore job by default if it is a manual action
This makes it possible to maintain backwards compatibility with configs created when manual actions were non-blocking. From now manual actions are blocking if configured with `allow_failure: false`, otherwise manual actions are optional, and their status is ignored.
This commit is contained in:
parent
3788f5face
commit
66dd209661
|
@ -58,7 +58,7 @@ module Ci
|
|||
commands: job[:commands],
|
||||
tag_list: job[:tags] || [],
|
||||
name: job[:name].to_s,
|
||||
allow_failure: job[:allow_failure] || false,
|
||||
allow_failure: job[:ignore],
|
||||
when: job[:when] || 'on_success',
|
||||
environment: job[:environment_name],
|
||||
coverage_regex: job[:coverage],
|
||||
|
|
|
@ -104,6 +104,14 @@ module Gitlab
|
|||
(before_script_value.to_a + script_value.to_a).join("\n")
|
||||
end
|
||||
|
||||
def manual_action?
|
||||
self.when == 'manual'
|
||||
end
|
||||
|
||||
def ignored?
|
||||
allow_failure.nil? ? manual_action? : allow_failure
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def inherit!(deps)
|
||||
|
@ -135,7 +143,8 @@ module Gitlab
|
|||
environment_name: environment_defined? ? environment_value[:name] : nil,
|
||||
coverage: coverage_defined? ? coverage_value : nil,
|
||||
artifacts: artifacts_value,
|
||||
after_script: after_script_value }
|
||||
after_script: after_script_value,
|
||||
ignore: ignored? }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -15,9 +15,9 @@ module Ci
|
|||
end
|
||||
|
||||
describe '#build_attributes' do
|
||||
describe 'coverage entry' do
|
||||
subject { described_class.new(config, path).build_attributes(:rspec) }
|
||||
subject { described_class.new(config, path).build_attributes(:rspec) }
|
||||
|
||||
describe 'coverage entry' do
|
||||
describe 'code coverage regexp' do
|
||||
let(:config) do
|
||||
YAML.dump(rspec: { script: 'rspec',
|
||||
|
@ -30,6 +30,56 @@ module Ci
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'allow failure entry' do
|
||||
context 'when job is a manual action' do
|
||||
context 'when allow_failure is defined' do
|
||||
let(:config) do
|
||||
YAML.dump(rspec: { script: 'rspec',
|
||||
when: 'manual',
|
||||
allow_failure: false })
|
||||
end
|
||||
|
||||
it 'is not allowed to fail' do
|
||||
expect(subject[:allow_failure]).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when allow_failure is not defined' do
|
||||
let(:config) do
|
||||
YAML.dump(rspec: { script: 'rspec',
|
||||
when: 'manual' })
|
||||
end
|
||||
|
||||
it 'is allowed to fail' do
|
||||
expect(subject[:allow_failure]).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is not a manual action' do
|
||||
context 'when allow_failure is defined' do
|
||||
let(:config) do
|
||||
YAML.dump(rspec: { script: 'rspec',
|
||||
allow_failure: false })
|
||||
end
|
||||
|
||||
it 'is not allowed to fail' do
|
||||
expect(subject[:allow_failure]).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when allow_failure is not defined' do
|
||||
let(:config) do
|
||||
YAML.dump(rspec: { script: 'rspec' })
|
||||
end
|
||||
|
||||
it 'is not allowed to fail' do
|
||||
expect(subject[:allow_failure]).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#builds_for_ref" do
|
||||
|
|
|
@ -155,6 +155,7 @@ describe Gitlab::Ci::Config::Entry::Global do
|
|||
stage: 'test',
|
||||
cache: { key: 'k', untracked: true, paths: ['public/'] },
|
||||
variables: { VAR: 'value' },
|
||||
ignore: false,
|
||||
after_script: ['make clean'] },
|
||||
spinach: { name: :spinach,
|
||||
before_script: [],
|
||||
|
@ -165,6 +166,7 @@ describe Gitlab::Ci::Config::Entry::Global do
|
|||
stage: 'test',
|
||||
cache: { key: 'k', untracked: true, paths: ['public/'] },
|
||||
variables: {},
|
||||
ignore: false,
|
||||
after_script: ['make clean'] },
|
||||
)
|
||||
end
|
||||
|
|
|
@ -144,6 +144,7 @@ describe Gitlab::Ci::Config::Entry::Job do
|
|||
script: %w[rspec],
|
||||
commands: "ls\npwd\nrspec",
|
||||
stage: 'test',
|
||||
ignore: false,
|
||||
after_script: %w[cleanup])
|
||||
end
|
||||
end
|
||||
|
@ -159,4 +160,82 @@ describe Gitlab::Ci::Config::Entry::Job do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#manual_action?' do
|
||||
context 'when job is a manual action' do
|
||||
let(:config) { { script: 'deploy', when: 'manual' } }
|
||||
|
||||
it 'is a manual action' do
|
||||
expect(entry).to be_manual_action
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is not a manual action' do
|
||||
let(:config) { { script: 'deploy' } }
|
||||
|
||||
it 'is not a manual action' do
|
||||
expect(entry).not_to be_manual_action
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#ignored?' do
|
||||
context 'when job is a manual action' do
|
||||
context 'when it is not specified if job is allowed to fail' do
|
||||
let(:config) do
|
||||
{ script: 'deploy', when: 'manual' }
|
||||
end
|
||||
|
||||
it 'is an ignored job' do
|
||||
expect(entry).to be_ignored
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is allowed to fail' do
|
||||
let(:config) do
|
||||
{ script: 'deploy', when: 'manual', allow_failure: true }
|
||||
end
|
||||
|
||||
it 'is an ignored job' do
|
||||
expect(entry).to be_ignored
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is not allowed to fail' do
|
||||
let(:config) do
|
||||
{ script: 'deploy', when: 'manual', allow_failure: false }
|
||||
end
|
||||
|
||||
it 'is not an ignored job' do
|
||||
expect(entry).not_to be_ignored
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is not a manual action' do
|
||||
context 'when it is not specified if job is allowed to fail' do
|
||||
let(:config) { { script: 'deploy' } }
|
||||
|
||||
it 'is not an ignored job' do
|
||||
expect(entry).not_to be_ignored
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is allowed to fail' do
|
||||
let(:config) { { script: 'deploy', allow_failure: true } }
|
||||
|
||||
it 'is an ignored job' do
|
||||
expect(entry).to be_ignored
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is not allowed to fail' do
|
||||
let(:config) { { script: 'deploy', allow_failure: false } }
|
||||
|
||||
it 'is not an ignored job' do
|
||||
expect(entry).not_to be_ignored
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -62,10 +62,12 @@ describe Gitlab::Ci::Config::Entry::Jobs do
|
|||
rspec: { name: :rspec,
|
||||
script: %w[rspec],
|
||||
commands: 'rspec',
|
||||
ignore: false,
|
||||
stage: 'test' },
|
||||
spinach: { name: :spinach,
|
||||
script: %w[spinach],
|
||||
commands: 'spinach',
|
||||
ignore: false,
|
||||
stage: 'test' })
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue