43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Ci
|
|
module Pipeline
|
|
module Chain
|
|
module Config
|
|
class Content < Chain::Base
|
|
include Chain::Helpers
|
|
include ::Gitlab::Utils::StrongMemoize
|
|
|
|
def perform!
|
|
if pipeline_config&.exists?
|
|
@pipeline.build_pipeline_config(content: pipeline_config.content)
|
|
@command.config_content = pipeline_config.content
|
|
@pipeline.config_source = pipeline_config.source
|
|
@command.pipeline_config = pipeline_config
|
|
else
|
|
error('Missing CI config file')
|
|
end
|
|
end
|
|
|
|
def break?
|
|
@pipeline.errors.any? || @pipeline.persisted?
|
|
end
|
|
|
|
private
|
|
|
|
def pipeline_config
|
|
strong_memoize(:pipeline_config) do
|
|
::Gitlab::Ci::ProjectConfig.new(
|
|
project: project, sha: @pipeline.sha,
|
|
custom_content: @command.content,
|
|
pipeline_source: @command.source, pipeline_source_bridge: @command.bridge
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|