diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-09-13 14:14:55 +0200 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-09-19 10:05:35 +0200 |
commit | a4638dddf22797f46d72ea7b73c8453ba68645ab (patch) | |
tree | 3b270989070a48e9e1ea3f983070168f863c4bd1 /app/services/create_deployment_service.rb | |
parent | 1d51bc7dfd04886fa5af69a60bb509691d697813 (diff) | |
download | gitlab-ce-a4638dddf22797f46d72ea7b73c8453ba68645ab.tar.gz |
Add support for dynamic environments
Environments that can have a URL with predefined CI variables.
Diffstat (limited to 'app/services/create_deployment_service.rb')
-rw-r--r-- | app/services/create_deployment_service.rb | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/app/services/create_deployment_service.rb b/app/services/create_deployment_service.rb index efeb9df9527..efa0798f47d 100644 --- a/app/services/create_deployment_service.rb +++ b/app/services/create_deployment_service.rb @@ -3,9 +3,13 @@ require_relative 'base_service' class CreateDeploymentService < BaseService def execute(deployable = nil) environment = project.environments.find_or_create_by( - name: params[:environment] + name: expanded_name ) + if expanded_url + environment.external_url = expanded_url + end + project.deployments.create( environment: environment, ref: params[:ref], @@ -15,4 +19,32 @@ class CreateDeploymentService < BaseService 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 |