diff options
-rw-r--r-- | app/models/concerns/deployable.rb | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/app/models/concerns/deployable.rb b/app/models/concerns/deployable.rb index 85db01af18d..28f890084d6 100644 --- a/app/models/concerns/deployable.rb +++ b/app/models/concerns/deployable.rb @@ -4,23 +4,27 @@ module Deployable extend ActiveSupport::Concern included do - after_create :create_deployment + before_create :build_deployment - def create_deployment + def build_deployment return unless starts_environment? && !has_deployment? - environment = project.environments.find_or_create_by( - name: expanded_environment_name - ) - - create_deployment!( + self.deployment = build_deployment( project_id: environment.project_id, - environment: environment, + environment: ensure_environment, ref: ref, tag: tag, sha: sha, user: user, on_stop: on_stop) end + + def ensure_environment + project.environments.find_by_name(expanded_environment_name) || build_environment + end + + def build_environment + project.environments.build(name: expanded_environment_name) + end end end |