Class: Gitlab::Ci::Pipeline::Seed::Build
- Includes:
- Utils::StrongMemoize
- Defined in:
- lib/gitlab/ci/pipeline/seed/build.rb,
lib/gitlab/ci/pipeline/seed/build/cache.rb
Defined Under Namespace
Classes: Cache
Instance Method Summary collapse
- #attributes ⇒ Object
- #bridge? ⇒ Boolean
- #errors ⇒ Object
- #included? ⇒ Boolean
-
#initialize(context, attributes, stages_for_needs_lookup) ⇒ Build
constructor
A new instance of Build.
- #name ⇒ Object
- #to_resource ⇒ Object
Constructor Details
#initialize(context, attributes, stages_for_needs_lookup) ⇒ Build
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 12 def initialize(context, attributes, stages_for_needs_lookup) @context = context @pipeline = context.pipeline @seed_attributes = attributes @stages_for_needs_lookup = stages_for_needs_lookup.compact @needs_attributes = dig(:needs_attributes) @resource_group_key = attributes.delete(:resource_group_key) @job_variables = @seed_attributes.delete(:job_variables) @execution_config_attribute = @seed_attributes.delete(:execution_config) @root_variables_inheritance = @seed_attributes.delete(:root_variables_inheritance) { true } @inputs = @seed_attributes.delete(:inputs) @using_rules = attributes.key?(:rules) @using_only = attributes.key?(:only) @using_except = attributes.key?(:except) @only = Gitlab::Ci::Build::Policy .fabricate(attributes.delete(:only)) @except = Gitlab::Ci::Build::Policy .fabricate(attributes.delete(:except)) @rules = Gitlab::Ci::Build::Rules .new(attributes.delete(:rules), default_when: attributes[:when]) @cache = Gitlab::Ci::Build::Cache .new(attributes.delete(:cache), @pipeline) calculate_yaml_variables! end |
Instance Method Details
#attributes ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 68 def attributes @seed_attributes .deep_merge(pipeline_attributes) .deep_merge(rules_attributes) .deep_merge(allow_failure_criteria_attributes) .deep_merge(@cache.cache_attributes) .deep_merge(inputs_attributes) .deep_merge() .deep_merge(build_execution_config_attribute) .deep_merge(scoped_user_id_attribute) .then { |attrs| add_execution_config(attrs) } .except(:stage) end |
#bridge? ⇒ Boolean
82 83 84 85 86 87 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 82 def bridge? attributes_hash = @seed_attributes.to_h attributes_hash.dig(:options, :trigger).present? || (attributes_hash.dig(:options, :bridge_needs).instance_of?(Hash) && attributes_hash.dig(:options, :bridge_needs, :pipeline).present?) end |
#errors ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 57 def errors logger.instrument(:pipeline_seed_build_errors) do # We check rules errors before checking "included?" because rules affects its inclusion status. next rules_errors if rules_errors next unless included? [needs_errors, variable_expansion_errors].compact.flatten end end |
#included? ⇒ Boolean
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 44 def included? logger.instrument(:pipeline_seed_build_inclusion) do if @using_rules rules_result.pass? elsif @using_only || @using_except all_of_only? && none_of_except? else true end end end |
#name ⇒ Object
40 41 42 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 40 def name dig(:name) end |
#to_resource ⇒ Object
89 90 91 92 93 94 95 96 97 |
# File 'lib/gitlab/ci/pipeline/seed/build.rb', line 89 def to_resource logger.instrument(:pipeline_seed_build_to_resource) do if bridge? ::Ci::Bridge.fabricate(attributes) else ::Ci::Build.fabricate(attributes) end end end |