summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/concerns/deployable.rb20
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