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:
Diffstat (limited to 'lib/gitlab/data_builder/pipeline.rb')
-rw-r--r--lib/gitlab/data_builder/pipeline.rb26
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/gitlab/data_builder/pipeline.rb b/lib/gitlab/data_builder/pipeline.rb
index e48f1fa8e80..b8ccef03e63 100644
--- a/lib/gitlab/data_builder/pipeline.rb
+++ b/lib/gitlab/data_builder/pipeline.rb
@@ -2,21 +2,35 @@
module Gitlab
module DataBuilder
- module Pipeline
- extend self
+ # Some callers want to include retried builds, so we wrap the payload hash
+ # in a SimpleDelegator with additional methods.
+ class Pipeline < SimpleDelegator
+ def self.build(pipeline)
+ new(pipeline)
+ end
- def build(pipeline)
- {
+ def initialize(pipeline)
+ @pipeline = pipeline
+
+ super(
object_kind: 'pipeline',
object_attributes: hook_attrs(pipeline),
merge_request: pipeline.merge_request && merge_request_attrs(pipeline.merge_request),
user: pipeline.user.try(:hook_attrs),
project: pipeline.project.hook_attrs(backward: false),
commit: pipeline.commit.try(:hook_attrs),
- builds: pipeline.builds.latest.map(&method(:build_hook_attrs))
- }
+ builds: Gitlab::Lazy.new { pipeline.builds.latest.map(&method(:build_hook_attrs)) }
+ )
end
+ def with_retried_builds
+ merge(
+ builds: Gitlab::Lazy.new { @pipeline.builds.map(&method(:build_hook_attrs)) }
+ )
+ end
+
+ private
+
def hook_attrs(pipeline)
{
id: pipeline.id,