blob: f745471913f4c5c76c2d7d7410ec266674c418ab (
plain)
1
2
3
4
5
6
7
8
9
10
11
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
39
40
41
42
43
44
45
|
require_relative 'base_service'
class CreateDeploymentService < BaseService
def execute(deployable)
environment = find_or_create_environment(params[:environment])
deployment = create_deployment(environment, deployable)
if deployment.persisted?
success(deployment)
else
error(deployment.errors)
end
end
private
def find_or_create_environment(environment)
find_environment(environment) || create_environment(environment)
end
def create_environment(environment)
project.environments.create(name: environment)
end
def find_environment(environment)
project.environments.find_by(name: environment)
end
def create_deployment(environment, deployable)
environment.deployments.create(
project: project,
ref: build.ref,
tag: build.tag,
sha: build.sha,
user: current_user,
deployable: deployable,
)
end
def success(deployment)
out = super()
out[:deployment] = deployment
out
end
end
|