Do not create pipeline objects when no builds
This commit is contained in:
parent
53fe06efde
commit
07af37a243
3 changed files with 34 additions and 23 deletions
|
@ -20,26 +20,33 @@ module Ci
|
|||
end
|
||||
end
|
||||
|
||||
# don't create the same build twice
|
||||
builds_attrs.reject! do |build_attrs|
|
||||
@commit.builds.find_by(ref: @commit.ref, tag: @commit.tag,
|
||||
trigger_request: trigger_request,
|
||||
name: build_attrs[:name])
|
||||
end
|
||||
|
||||
builds_attrs.map do |build_attrs|
|
||||
# don't create the same build twice
|
||||
unless @commit.builds.find_by(ref: @commit.ref, tag: @commit.tag,
|
||||
trigger_request: trigger_request, name: build_attrs[:name])
|
||||
build_attrs.slice!(:name,
|
||||
:commands,
|
||||
:tag_list,
|
||||
:options,
|
||||
:allow_failure,
|
||||
:stage,
|
||||
:stage_idx)
|
||||
build_attrs.slice!(:name,
|
||||
:commands,
|
||||
:tag_list,
|
||||
:options,
|
||||
:allow_failure,
|
||||
:stage,
|
||||
:stage_idx)
|
||||
|
||||
build_attrs.merge!(ref: @commit.ref,
|
||||
tag: @commit.tag,
|
||||
trigger_request: trigger_request,
|
||||
user: user,
|
||||
project: @commit.project)
|
||||
build_attrs.merge!(ref: @commit.ref,
|
||||
tag: @commit.tag,
|
||||
trigger_request: trigger_request,
|
||||
user: user,
|
||||
project: @commit.project)
|
||||
|
||||
@commit.builds.create!(build_attrs)
|
||||
end
|
||||
##
|
||||
# We do not persist new builds here.
|
||||
# Those will be persisted when @commit is saved.
|
||||
#
|
||||
@commit.builds.new(build_attrs)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -25,16 +25,16 @@ class CreateCommitBuildsService
|
|||
return false
|
||||
end
|
||||
|
||||
# Create a new ci_commit
|
||||
commit.save!
|
||||
|
||||
# Skip creating builds for commits that have [ci skip]
|
||||
unless commit.skip_ci?
|
||||
# Create builds for commit
|
||||
commit.create_builds(user)
|
||||
# Create builds for commit and
|
||||
# skip saving pipeline when there are no builds
|
||||
return false unless commit.create_builds(user)
|
||||
end
|
||||
|
||||
commit.update_state!
|
||||
# Create a new ci_commit
|
||||
commit.save!
|
||||
commit
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,7 +9,7 @@ describe Ci::CreateBuildsService, services: true do
|
|||
#
|
||||
|
||||
subject do
|
||||
described_class.new(commit).execute(commit, nil, user, status)
|
||||
described_class.new(commit).execute('test', user, status, nil)
|
||||
end
|
||||
|
||||
context 'next builds available' do
|
||||
|
@ -17,6 +17,10 @@ describe Ci::CreateBuildsService, services: true do
|
|||
|
||||
it { is_expected.to be_an_instance_of Array }
|
||||
it { is_expected.to all(be_an_instance_of Ci::Build) }
|
||||
|
||||
it 'does not persist created builds' do
|
||||
expect(subject.first).not_to be_persisted
|
||||
end
|
||||
end
|
||||
|
||||
context 'builds skipped' do
|
||||
|
|
Loading…
Reference in a new issue