summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMayra Cabrera <mcabrera@gitlab.com>2018-03-12 14:28:09 -0600
committerMayra Cabrera <mcabrera@gitlab.com>2018-03-12 15:20:06 -0600
commit244a4bf7b3c610611ffe8623099398027cc01bc9 (patch)
tree73651535d2a77f7638dd97c6156cf10c99716065
parenta3b85d10e2c61b650d64016c580403d01098da33 (diff)
downloadgitlab-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.rb17
-rw-r--r--app/serializers/job_entity.rb9
-rw-r--r--spec/serializers/build_serializer_spec.rb1
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