summaryrefslogtreecommitdiff
path: root/app/services/create_deployment_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/create_deployment_service.rb')
-rw-r--r--app/services/create_deployment_service.rb78
1 files changed, 39 insertions, 39 deletions
diff --git a/app/services/create_deployment_service.rb b/app/services/create_deployment_service.rb
index 47f9b2c621c..63b85c3de7d 100644
--- a/app/services/create_deployment_service.rb
+++ b/app/services/create_deployment_service.rb
@@ -1,71 +1,71 @@
-class CreateDeploymentService < BaseService
- def execute(deployable = nil)
+class CreateDeploymentService
+ attr_reader :job
+
+ delegate :expanded_environment_name,
+ :variables,
+ :project,
+ to: :job
+
+ def initialize(job)
+ @job = job
+ end
+
+ def execute
return unless executable?
ActiveRecord::Base.transaction do
- @deployable = deployable
-
- @environment = environment
- @environment.external_url = expanded_url if expanded_url
- @environment.fire_state_event(action)
+ environment.external_url = expanded_environment_url if
+ expanded_environment_url
+ environment.fire_state_event(action)
- return unless @environment.save
- return if @environment.stopped?
+ return unless environment.save
+ return if environment.stopped?
- deploy.tap do |deployment|
- deployment.update_merge_request_metrics!
- end
+ deploy.tap(&:update_merge_request_metrics!)
end
end
private
def executable?
- project && name.present?
+ project && job.environment.present? && environment
end
def deploy
project.deployments.create(
- environment: @environment,
- ref: params[:ref],
- tag: params[:tag],
- sha: params[:sha],
- user: current_user,
- deployable: @deployable,
- on_stop: options[:on_stop])
+ environment: environment,
+ ref: job.ref,
+ tag: job.tag,
+ sha: job.sha,
+ user: job.user,
+ deployable: job,
+ on_stop: on_stop)
end
def environment
- @environment ||= project.environments.find_or_create_by(name: expanded_name)
+ @environment ||= job.persisted_environment
end
- def expanded_name
- ExpandVariables.expand(name, variables)
+ def environment_options
+ @environment_options ||= job.options&.dig(:environment) || {}
end
- def expanded_url
- return unless url
-
- @expanded_url ||= ExpandVariables.expand(url, variables)
- end
-
- def name
- params[:environment]
- end
+ def expanded_environment_url
+ return @expanded_environment_url if defined?(@expanded_environment_url)
- def url
- options[:url]
+ @expanded_environment_url =
+ ExpandVariables.expand(environment_url, variables) if environment_url
end
- def options
- params[:options] || {}
+ def environment_url
+ environment_options[:url]
end
- def variables
- params[:variables] || []
+ def on_stop
+ environment_options[:on_stop]
end
def action
- options[:action] || 'start'
+ environment_options[:action] || 'start'
end
end