diff options
author | Shinya Maeda <shinya@gitlab.com> | 2019-03-06 11:34:38 +0300 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2019-03-19 19:19:27 +0300 |
commit | aee119c0cd44edd008f3167258bf45cb94ee5522 (patch) | |
tree | 53d2134cfbff85361f4875a1aa8eed075a282657 /app | |
parent | 7fb9dff43dcf56472e22be7a26805ee5fa339e8b (diff) |
Update pipeline detail view to accommodate post-merge pipelines
Commit changes
Add spec
Add changelog
fix
fix
Fix
Fix spec
Finish spec
ok
nice
ok
ok
ok
fix
Diffstat (limited to 'app')
-rw-r--r-- | app/presenters/ci/pipeline_presenter.rb | 53 | ||||
-rw-r--r-- | app/presenters/merge_request_presenter.rb | 6 | ||||
-rw-r--r-- | app/serializers/merge_request_for_pipeline_entity.rb | 4 | ||||
-rw-r--r-- | app/views/projects/pipelines/_info.html.haml | 14 |
4 files changed, 65 insertions, 12 deletions
diff --git a/app/presenters/ci/pipeline_presenter.rb b/app/presenters/ci/pipeline_presenter.rb index 57daf04efc6..1c1347c5a57 100644 --- a/app/presenters/ci/pipeline_presenter.rb +++ b/app/presenters/ci/pipeline_presenter.rb @@ -3,6 +3,7 @@ module Ci class PipelinePresenter < Gitlab::View::Presenter::Delegated include Gitlab::Utils::StrongMemoize + include ActionView::Helpers::UrlHelper # We use a class method here instead of a constant, allowing EE to redefine # the returned `Hash` more easily. @@ -32,5 +33,57 @@ module Ci "Pipeline is redundant and is auto-canceled by Pipeline ##{auto_canceled_by_id}" end end + + def ref_text + if pipeline.detached_merge_request_pipeline? + _("for %{link_to_merge_request} with %{link_to_merge_request_source_branch}").html_safe % { link_to_merge_request: link_to_merge_request, link_to_merge_request_source_branch: link_to_merge_request_source_branch } + elsif pipeline.merge_request_pipeline? + _("for %{link_to_merge_request} with %{link_to_merge_request_source_branch} into %{link_to_merge_request_target_branch}").html_safe % { link_to_merge_request: link_to_merge_request, link_to_merge_request_source_branch: link_to_merge_request_source_branch, link_to_merge_request_target_branch: link_to_merge_request_target_branch } + elsif pipeline.ref + if pipeline.ref_exists? + _("for %{link_to_pipeline_ref}").html_safe % { link_to_pipeline_ref: link_to_pipeline_ref } + else + _("for %{ref}") % { ref: content_tag(:span, pipeline.ref, class: 'ref-name') } + end + end + end + + def link_to_pipeline_ref + link_to(pipeline.ref, + project_commits_path(pipeline.project, pipeline.ref), + class: "ref-name") + end + + def link_to_merge_request + return unless merge_request_presenter + + link_to(merge_request_presenter.to_reference, + project_merge_request_path(merge_request_presenter.project, merge_request_presenter), + class: 'mr-iid') + end + + def link_to_merge_request_source_branch + return unless merge_request_presenter + + link_to(merge_request_presenter.source_branch, + merge_request_presenter.source_branch_commits_path, + class: 'ref-name') + end + + def link_to_merge_request_target_branch + return unless merge_request_presenter + + link_to(merge_request_presenter.target_branch, + merge_request_presenter.target_branch_commits_path, + class: 'ref-name') + end + + private + + def merge_request_presenter + return unless pipeline.triggered_by_merge_request? + + @merge_request_presenter ||= pipeline.merge_request.present(current_user: current_user) + end end end diff --git a/app/presenters/merge_request_presenter.rb b/app/presenters/merge_request_presenter.rb index af164858408..284b1ad9b55 100644 --- a/app/presenters/merge_request_presenter.rb +++ b/app/presenters/merge_request_presenter.rb @@ -104,6 +104,12 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated end end + def source_branch_commits_path + if source_branch_exists? + project_commits_path(source_project, source_branch) + end + end + def source_branch_path if source_branch_exists? project_branch_path(source_project, source_branch) diff --git a/app/serializers/merge_request_for_pipeline_entity.rb b/app/serializers/merge_request_for_pipeline_entity.rb index 7779ddfd65a..17a5c4ebbf9 100644 --- a/app/serializers/merge_request_for_pipeline_entity.rb +++ b/app/serializers/merge_request_for_pipeline_entity.rb @@ -11,7 +11,7 @@ class MergeRequestForPipelineEntity < Grape::Entity expose :title expose :source_branch - expose :source_branch_path + expose :source_branch_commits_path, as: :source_branch_path expose :target_branch - expose :target_branch_path + expose :target_branch_commits_path, as: :target_branch_path end diff --git a/app/views/projects/pipelines/_info.html.haml b/app/views/projects/pipelines/_info.html.haml index 55adeb345ab..5d307d6a70d 100644 --- a/app/views/projects/pipelines/_info.html.haml +++ b/app/views/projects/pipelines/_info.html.haml @@ -10,13 +10,7 @@ .icon-container = icon('clock-o') = pluralize @pipeline.total_size, "job" - - if @pipeline.ref - from - - if @pipeline.ref_exists? - = link_to @pipeline.ref, project_ref_path(@project, @pipeline.ref), class: "ref-name" - - else - %span.ref-name - = @pipeline.ref + = @pipeline.ref_text - if @pipeline.duration in = time_interval_in_words(@pipeline.duration) @@ -48,9 +42,9 @@ content: "<a class='autodevops-link' href='#{popover_content_url}' target='_blank' rel='noopener noreferrer nofollow'>#{popover_content_text}</a>", } } Auto DevOps - - if @pipeline.merge_request_event? - %span.js-pipeline-url-mergerequest.badge.badge-info.has-tooltip{ title: "This pipeline is run in a merge request context" } - merge request + - if @pipeline.detached_merge_request_pipeline? + %span.js-pipeline-url-mergerequest.badge.badge-info.has-tooltip{ title: "This pipeline is run on the source branch" } + detached - if @pipeline.stuck? %span.js-pipeline-url-stuck.badge.badge-warning stuck |