From a1f617a2be5e0df21bb9fd0dad0c32a90f8c55bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= Date: Mon, 15 Apr 2019 07:56:00 +0000 Subject: [PATCH] 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 (cherry picked from commit 20d8dc53c8b1268c5823cc18e594c54400776ba3) 781cd4a2 Rescue and log errors raised when preparing builds --- app/services/ci/prepare_build_service.rb | 8 +++++--- spec/services/ci/prepare_build_service_spec.rb | 16 +++++++++++++++- 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 -- GitLab