Class: Gitlab::DataBuilder::Pipeline

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/gitlab/data_builder/pipeline.rb

Overview

Some callers want to include retried builds, so we wrap the payload hash in a SimpleDelegator with additional methods.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pipeline) ⇒ Pipeline

Returns a new instance of Pipeline.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/gitlab/data_builder/pipeline.rb', line 12

def initialize(pipeline)
  @pipeline = pipeline

  attrs = {
    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: Gitlab::Lazy.new do
      preload_builds(pipeline, :latest_builds)
      pipeline.latest_builds.map(&method(:build_hook_attrs))
    end
  }

  if pipeline.source_pipeline.present?
    attrs[:source_pipeline] = source_pipeline_attrs(pipeline.source_pipeline)
  end

  super(attrs)
end

Class Method Details

.build(pipeline) ⇒ Object



8
9
10
# File 'lib/gitlab/data_builder/pipeline.rb', line 8

def self.build(pipeline)
  new(pipeline)
end

Instance Method Details

#with_retried_buildsObject



35
36
37
38
39
40
41
42
# File 'lib/gitlab/data_builder/pipeline.rb', line 35

def with_retried_builds
  merge(
    builds: Gitlab::Lazy.new do
      preload_builds(@pipeline, :builds)
      @pipeline.builds.map(&method(:build_hook_attrs))
    end
  )
end