diff options
Diffstat (limited to 'app/services/environments/create_for_build_service.rb')
-rw-r--r-- | app/services/environments/create_for_build_service.rb | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/app/services/environments/create_for_build_service.rb b/app/services/environments/create_for_build_service.rb deleted file mode 100644 index ff4da212002..00000000000 --- a/app/services/environments/create_for_build_service.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -module Environments - # This class creates an environment record for a build (a pipeline job). - class CreateForBuildService - def execute(build) - return unless build.instance_of?(::Ci::Build) && build.has_environment_keyword? - - environment = to_resource(build) - - if environment.persisted? - build.persisted_environment = environment - build.assign_attributes(metadata_attributes: { expanded_environment_name: environment.name }) - else - build.assign_attributes(status: :failed, failure_reason: :environment_creation_failure) - end - - environment - end - - private - - # rubocop: disable Performance/ActiveRecordSubtransactionMethods - def to_resource(build) - build.project.environments.safe_find_or_create_by(name: build.expanded_environment_name) do |environment| - # Initialize the attributes at creation - environment.auto_stop_in = expanded_auto_stop_in(build) - environment.tier = build.environment_tier_from_options - environment.merge_request = build.pipeline.merge_request - end - end - # rubocop: enable Performance/ActiveRecordSubtransactionMethods - - def expanded_auto_stop_in(build) - return unless build.environment_auto_stop_in - - ExpandVariables.expand(build.environment_auto_stop_in, -> { build.simple_variables.sort_and_expand_all }) - end - end -end |