a4638dddf2
Environments that can have a URL with predefined CI variables.
50 lines
845 B
Ruby
50 lines
845 B
Ruby
require_relative 'base_service'
|
|
|
|
class CreateDeploymentService < BaseService
|
|
def execute(deployable = nil)
|
|
environment = project.environments.find_or_create_by(
|
|
name: expanded_name
|
|
)
|
|
|
|
if expanded_url
|
|
environment.external_url = expanded_url
|
|
end
|
|
|
|
project.deployments.create(
|
|
environment: environment,
|
|
ref: params[:ref],
|
|
tag: params[:tag],
|
|
sha: params[:sha],
|
|
user: current_user,
|
|
deployable: deployable
|
|
)
|
|
end
|
|
|
|
private
|
|
|
|
def expanded_name
|
|
name.expand_variables(variables)
|
|
end
|
|
|
|
def expanded_url
|
|
return unless url
|
|
|
|
@expanded_url ||= url.expand_variables(variables)
|
|
end
|
|
|
|
def name
|
|
params[:environment]
|
|
end
|
|
|
|
def url
|
|
options[:url]
|
|
end
|
|
|
|
def options
|
|
params[:environment] || {}
|
|
end
|
|
|
|
def variables
|
|
params[:variables] || []
|
|
end
|
|
end
|