From 3bc5f7113350096263d615de07afe143f602659d Mon Sep 17 00:00:00 2001 From: Steve Azzopardi Date: Mon, 20 Aug 2018 15:15:53 +0200 Subject: Add deployment information in job API closes https://gitlab.com/gitlab-org/gitlab-ce/issues/50460 --- app/models/ci/build.rb | 23 +++++++++++++++++++++++ app/serializers/build_details_entity.rb | 14 ++++++++++++++ 2 files changed, 37 insertions(+) (limited to 'app') diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index ab738c2fad8..63aaa0f7bcc 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -654,8 +654,31 @@ module Ci end end + # Virtual deployment status depending on the environment status. + def deployment_status + return nil unless starts_environment? + + if success? + return successful_deployment_status + elsif complete? && !success? + return :failed + end + + :creating + end + private + def successful_deployment_status + if success? && last_deployment&.last? + return :last + elsif success? && last_deployment.present? + return :out_of_date + end + + :creating + end + def each_test_report Ci::JobArtifact::TEST_REPORT_FILE_TYPES.each do |file_type| public_send("job_artifacts_#{file_type}").each_blob do |blob| # rubocop:disable GitlabSecurity/PublicSend diff --git a/app/serializers/build_details_entity.rb b/app/serializers/build_details_entity.rb index 6f8194d9856..ab9861c58c4 100644 --- a/app/serializers/build_details_entity.rb +++ b/app/serializers/build_details_entity.rb @@ -1,12 +1,26 @@ # frozen_string_literal: true class BuildDetailsEntity < JobEntity + include EnvironmentHelper + include RequestAwareEntity + include CiStatusHelper + expose :coverage, :erased_at, :duration expose :tag_list, as: :tags expose :user, using: UserEntity expose :runner, using: RunnerEntity expose :pipeline, using: PipelineEntity + expose :deployment_status, if: -> (*) { build.has_environment? } do + expose :deployment_status, as: :status + + expose :icon do |build| + ci_label_for_status(build.status) + end + + expose :persisted_environment, as: :environment, with: EnvironmentEntity + end + expose :metadata, using: BuildMetadataEntity expose :artifact, if: -> (*) { can?(current_user, :read_build, build) } do -- cgit v1.2.3