Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2019-03-01 13:05:04 +0300
committerShinya Maeda <shinya@gitlab.com>2019-03-06 12:30:35 +0300
commit50776d2d298c3b6c98e2531f116ca43ba10dcda4 (patch)
tree32e9e41dafa65c0ecff65fa941918e09d268f28c /app/serializers
parentc9e5ce8dbd25203484b43c48f0a55a5d7bf396e8 (diff)
Expose merge request entity for pipelines
Add preload Fix ok Write tests test only postgresql ok add more test ; Improve wording Add changelog Fix
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/merge_request_for_pipeline_entity.rb17
-rw-r--r--app/serializers/pipeline_entity.rb10
-rw-r--r--app/serializers/pipeline_serializer.rb1
3 files changed, 28 insertions, 0 deletions
diff --git a/app/serializers/merge_request_for_pipeline_entity.rb b/app/serializers/merge_request_for_pipeline_entity.rb
new file mode 100644
index 00000000000..7779ddfd65a
--- /dev/null
+++ b/app/serializers/merge_request_for_pipeline_entity.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class MergeRequestForPipelineEntity < Grape::Entity
+ include RequestAwareEntity
+
+ expose :iid
+
+ expose :path do |merge_request|
+ project_merge_request_path(merge_request.project, merge_request)
+ end
+
+ expose :title
+ expose :source_branch
+ expose :source_branch_path
+ expose :target_branch
+ expose :target_branch_path
+end
diff --git a/app/serializers/pipeline_entity.rb b/app/serializers/pipeline_entity.rb
index c2990cb5159..5ac1e590d39 100644
--- a/app/serializers/pipeline_entity.rb
+++ b/app/serializers/pipeline_entity.rb
@@ -28,6 +28,7 @@ class PipelineEntity < Grape::Entity
expose :can_retry?, as: :retryable
expose :can_cancel?, as: :cancelable
expose :failure_reason?, as: :failure_reason
+ expose :detached_merge_request_pipeline?, as: :detached
end
expose :details do
@@ -36,6 +37,10 @@ class PipelineEntity < Grape::Entity
expose :finished_at
end
+ expose :merge_request, if: -> (*) { has_presentable_merge_request? }, with: MergeRequestForPipelineEntity do |pipeline|
+ pipeline.merge_request.present(current_user: request.current_user)
+ end
+
expose :ref do
expose :name do |pipeline|
pipeline.ref
@@ -81,6 +86,11 @@ class PipelineEntity < Grape::Entity
pipeline.cancelable?
end
+ def has_presentable_merge_request?
+ pipeline.triggered_by_merge_request? &&
+ can?(request.current_user, :read_merge_request, pipeline.merge_request)
+ end
+
def detailed_status
pipeline.detailed_status(request.current_user)
end
diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb
index 7451433a841..dbbeca9431d 100644
--- a/app/serializers/pipeline_serializer.rb
+++ b/app/serializers/pipeline_serializer.rb
@@ -15,6 +15,7 @@ class PipelineSerializer < BaseSerializer
:manual_actions,
:scheduled_actions,
:artifacts,
+ :merge_request,
{
pending_builds: :project,
project: [:route, { namespace: :route }],