summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2019-04-15 07:56:00 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2019-04-15 07:56:00 +0000
commit20d8dc53c8b1268c5823cc18e594c54400776ba3 (patch)
tree4a67ebbc9f90d7fb1a6eb6ab71522289f75743d1
parent25af3a15fc7819b6fe7620bdaa72a4281252079c (diff)
parent781cd4a29d89ae2cd24329ca33d59b5d959617d2 (diff)
downloadgitlab-ce-20d8dc53c8b1268c5823cc18e594c54400776ba3.tar.gz
Merge branch '60480-rescue-build-preparing-errors' into 'master'
Rescue and log errors raised when preparing builds Closes #60480 See merge request gitlab-org/gitlab-ce!27351
-rw-r--r--app/services/ci/prepare_build_service.rb8
-rw-r--r--spec/services/ci/prepare_build_service_spec.rb16
2 files changed, 20 insertions, 4 deletions
diff --git a/app/services/ci/prepare_build_service.rb b/app/services/ci/prepare_build_service.rb
index 32f11438b79..3722faeb020 100644
--- a/app/services/ci/prepare_build_service.rb
+++ b/app/services/ci/prepare_build_service.rb
@@ -11,9 +11,11 @@ module Ci
def execute
prerequisites.each(&:complete!)
- unless build.enqueue
- build.drop!(:unmet_prerequisites)
- end
+ build.enqueue!
+ rescue => e
+ Gitlab::Sentry.track_acceptable_exception(e, extra: { build_id: build.id })
+
+ build.drop(:unmet_prerequisites)
end
private
diff --git a/spec/services/ci/prepare_build_service_spec.rb b/spec/services/ci/prepare_build_service_spec.rb
index 1797f8f964f..2d027f13e52 100644
--- a/spec/services/ci/prepare_build_service_spec.rb
+++ b/spec/services/ci/prepare_build_service_spec.rb
@@ -38,7 +38,21 @@ describe Ci::PrepareBuildService do
end
it 'drops the build' do
- expect(build).to receive(:drop!).with(:unmet_prerequisites).once
+ expect(build).to receive(:drop).with(:unmet_prerequisites).once
+
+ subject
+ end
+ end
+
+ context 'prerequisites raise an error' do
+ before do
+ allow(prerequisite).to receive(:complete!).and_raise Kubeclient::HttpError.new(401, 'unauthorized', nil)
+ end
+
+ it 'drops the build and notifies Sentry' do
+ expect(build).to receive(:drop).with(:unmet_prerequisites).once
+ expect(Gitlab::Sentry).to receive(:track_acceptable_exception)
+ .with(instance_of(Kubeclient::HttpError), hash_including(extra: { build_id: build.id }))
subject
end