diff options
author | Mayra Cabrera <mcabrera@gitlab.com> | 2018-03-12 14:28:09 -0600 |
---|---|---|
committer | Mayra Cabrera <mcabrera@gitlab.com> | 2018-03-12 15:20:06 -0600 |
commit | 244a4bf7b3c610611ffe8623099398027cc01bc9 (patch) | |
tree | 73651535d2a77f7638dd97c6156cf10c99716065 | |
parent | a3b85d10e2c61b650d64016c580403d01098da33 (diff) | |
download | gitlab-ce-41111-show-failure-reason-in-job-page.tar.gz |
Include failure_reason on BuildSerializer41111-show-failure-reason-in-job-page
- Add a method on Ci::Build presenter to map the failure to an
appropriate description
Closes #41111
-rw-r--r-- | app/presenters/ci/build_presenter.rb | 17 | ||||
-rw-r--r-- | app/serializers/job_entity.rb | 9 | ||||
-rw-r--r-- | spec/serializers/build_serializer_spec.rb | 1 |
3 files changed, 26 insertions, 1 deletions
diff --git a/app/presenters/ci/build_presenter.rb b/app/presenters/ci/build_presenter.rb index 255475e1fe6..655cb817a80 100644 --- a/app/presenters/ci/build_presenter.rb +++ b/app/presenters/ci/build_presenter.rb @@ -28,5 +28,22 @@ module Ci trigger_request.user_variables end end + + def failure_reason_description + failure_descriptions[failure_reason] + end + + private + + def failure_descriptions + { + "unknown_failure" => "Unknown failure", + "script_failure" => "Script failure", + "api_failure" => "API failure", + "stuck_or_timeout_failure" => "Stuck or timeout failure", + "runner_system_failure" => "Runner system failure", + "missing_dependency_failure" => "Missing dependency failure" + } + end end end diff --git a/app/serializers/job_entity.rb b/app/serializers/job_entity.rb index 523b522d449..fea65b5d58f 100644 --- a/app/serializers/job_entity.rb +++ b/app/serializers/job_entity.rb @@ -25,7 +25,10 @@ class JobEntity < Grape::Entity expose :playable?, as: :playable expose :created_at expose :updated_at - expose :detailed_status, as: :status, with: StatusEntity + expose :status do + expose :failure_reason + expose :detailed_status, merge: true, with: StatusEntity + end private @@ -50,4 +53,8 @@ class JobEntity < Grape::Entity def path_to(route, build) send("#{route}_path", build.project.namespace, build.project, build) # rubocop:disable GitlabSecurity/PublicSend end + + def failure_reason + Ci::BuildPresenter.new(build).failure_reason_description + end end diff --git a/spec/serializers/build_serializer_spec.rb b/spec/serializers/build_serializer_spec.rb index 9673b11c2a2..147306dc790 100644 --- a/spec/serializers/build_serializer_spec.rb +++ b/spec/serializers/build_serializer_spec.rb @@ -39,6 +39,7 @@ describe BuildSerializer do expect(subject[:label]).to eq(status.label) expect(subject[:icon]).to eq(status.icon) expect(subject[:favicon]).to match_asset_path("/assets/ci_favicons/#{status.favicon}.ico") + expect(subject[:failure_reason]).to eq('Unknown failure') end end end |