Commit 78174ece authored by Grzegorz Bizon's avatar Grzegorz Bizon

Merge branch 'sh-add-sidekiq-logging-for-bad-ci' into 'master'

Log errors for failed pipeline creation in PostReceive

See merge request gitlab-org/gitlab-ce!32633
parents 9c549ad5 c34240d2
...@@ -57,7 +57,9 @@ module Git ...@@ -57,7 +57,9 @@ module Git
Ci::CreatePipelineService Ci::CreatePipelineService
.new(project, current_user, pipeline_params) .new(project, current_user, pipeline_params)
.execute(:push, pipeline_options) .execute!(:push, pipeline_options)
rescue Ci::CreatePipelineService::CreateError => ex
log_pipeline_errors(ex)
end end
def execute_project_hooks def execute_project_hooks
...@@ -125,5 +127,29 @@ module Git ...@@ -125,5 +127,29 @@ module Git
project.mark_stuck_remote_mirrors_as_failed! project.mark_stuck_remote_mirrors_as_failed!
project.update_remote_mirrors project.update_remote_mirrors
end end
def log_pipeline_errors(exception)
data = {
class: self.class.name,
correlation_id: Labkit::Correlation::CorrelationId.current_id.to_s,
project_id: project.id,
project_path: project.full_path,
message: "Error creating pipeline",
errors: exception.to_s,
pipeline_params: pipeline_params
}
logger.warn(data)
end
def logger
if Sidekiq.server?
Sidekiq.logger
else
# This service runs in Sidekiq, so this shouldn't ever be
# called, but this is included just in case.
Gitlab::ProjectServiceLogger
end
end
end end
end end
---
title: Log errors for failed pipeline creation in PostReceive
merge_request: 32633
author:
type: other
...@@ -99,6 +99,20 @@ describe Git::BranchPushService, services: true do ...@@ -99,6 +99,20 @@ describe Git::BranchPushService, services: true do
expect(pipeline).to be_push expect(pipeline).to be_push
expect(Gitlab::Git::BRANCH_REF_PREFIX + pipeline.ref).to eq(ref) expect(Gitlab::Git::BRANCH_REF_PREFIX + pipeline.ref).to eq(ref)
end end
context 'when pipeline has errors' do
before do
config = YAML.dump({ test: { script: 'ls', only: ['feature'] } })
stub_ci_pipeline_yaml_file(config)
end
it 'reports an error' do
allow(Sidekiq).to receive(:server?).and_return(true)
expect(Sidekiq.logger).to receive(:warn)
expect { subject }.not_to change { Ci::Pipeline.count }
end
end
end end
describe "Updates merge requests" do describe "Updates merge requests" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment