diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-10-13 14:23:23 +0300 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-10-13 14:23:23 +0300 |
commit | 03a8ed971154cb218b82e8be53943612de94999f (patch) | |
tree | 64c0a05386b14be692935366a9e9443b7df1e690 /app/services/create_deployment_service.rb | |
parent | 204fdcb1abb9c76b2d4bd6260c6e5ce91529aeb8 (diff) |
Use trasaction to process build deployment
Diffstat (limited to 'app/services/create_deployment_service.rb')
-rw-r--r-- | app/services/create_deployment_service.rb | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/app/services/create_deployment_service.rb b/app/services/create_deployment_service.rb index 799ad3e1bd0..c6dc2148c11 100644 --- a/app/services/create_deployment_service.rb +++ b/app/services/create_deployment_service.rb @@ -2,25 +2,29 @@ require_relative 'base_service' class CreateDeploymentService < BaseService def execute(deployable = nil) - environment = find_or_create_environment + ActiveRecord::Base.transaction do + @deployable = deployable + @environment = prepare_environment - deployment = project.deployments.create( - environment: environment, + deploy.tap do |deployment| + deployment.update_merge_request_metrics! + end + end + end + + private + + def deploy + project.deployments.create( + environment: @environment, ref: params[:ref], tag: params[:tag], sha: params[:sha], user: current_user, - deployable: deployable - ) - - deployment.update_merge_request_metrics! - - deployment + deployable: @deployable) end - private - - def find_or_create_environment + def prepare_environment project.environments.find_or_create_by(name: expanded_name) do |environment| environment.external_url = expanded_url end |