diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2018-09-17 11:51:18 +0300 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2018-09-17 11:51:18 +0300 |
commit | e1b0ac5b8fc523ddbfbda1f8a30888b61b82374e (patch) | |
tree | a83b554978a4af8fc015b21ff97683d91e237ffc /app | |
parent | 5a8908bf587a0723b07e510dd6118a686d49af98 (diff) | |
parent | 3bc5f7113350096263d615de07afe143f602659d (diff) |
Merge branch '50460-send-deployment-information-in-job-api' into 'master'
Resolve "Send deployment information in job API"
Closes #50460
See merge request gitlab-org/gitlab-ce!21307
Diffstat (limited to 'app')
-rw-r--r-- | app/models/ci/build.rb | 23 | ||||
-rw-r--r-- | app/serializers/build_details_entity.rb | 14 |
2 files changed, 37 insertions, 0 deletions
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 |