#405: fail builds if no packages

This commit is contained in:
Vokhmin Alexey V 2014-06-27 21:06:09 +04:00
parent 544fc16c96
commit f4987ad67b
4 changed files with 33 additions and 19 deletions

View File

@ -60,5 +60,24 @@ module AbfWorkerService
end end
end end
def filter_build_lists_without_packages(*build_lists)
ids = []
build_lists = build_lists.flatten.select do |build_list|
sha1 = build_list.packages.pluck(:sha1).find do |sha1|
!FileStoreService::File.new(sha1: sha1).exist?
end
if sha1.present?
ids << build_list.id
false
else
true
end
end
BuildList.where(id: ids).update_all(status: BuildList::PACKAGES_FAIL)
build_lists
end
end end
end end

View File

@ -9,6 +9,12 @@ module AbfWorkerService
def create! def create!
cleanup_folder cleanup_folder
if filter_build_lists_without_packages(build_list).blank?
build_list.fail_publish_container
return
end
Resque.push( Resque.push(
'publish_worker', # Low priority 'publish_worker', # Low priority
'class' => 'AbfWorker::PublishWorker', 'class' => 'AbfWorker::PublishWorker',

View File

@ -237,24 +237,5 @@ module AbfWorkerService
end end
end end
def filter_build_lists_without_packages(build_lists)
ids = []
build_lists = build_lists.select do |build_list|
sha1 = build_list.packages.pluck(:sha1).find do |sha1|
!FileStoreService::File.new(sha1: sha1).exist?
end
if sha1.present?
ids << build_list.id
false
else
true
end
end
BuildList.where(id: ids).update_all(status: BuildList::PACKAGES_FAIL)
build_lists
end
end end
end end

View File

@ -12,10 +12,18 @@ describe AbfWorkerService::Container do
context '#create!' do context '#create!' do
it 'creates task' do it 'creates task' do
expect(build_list).to_not receive(:fail_publish_container)
expect(Resque).to receive(:push) expect(Resque).to receive(:push)
subject.create! subject.create!
end end
it 'fails when no packages on FS' do
expect(subject).to receive(:filter_build_lists_without_packages).and_return([])
expect(build_list).to receive(:fail_publish_container)
expect(Resque).to_not receive(:push)
subject.create!
end
end end
end end