summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2018-11-13 15:20:47 +0900
committerShinya Maeda <shinya@gitlab.com>2018-11-13 15:20:47 +0900
commit8fe613fd67ba7c0fb9ed6f71dca9620fe468bf7e (patch)
tree2cd86d4165e684111afd4bd9e231dd96664ff5a7
parentdbb342d4d95d24a1313c64be4a923ea5f759d3fa (diff)
downloadgitlab-ce-build-deployment-relation-with-before-create-hook.tar.gz
Build deployment ralation in before create hookbuild-deployment-relation-with-before-create-hook
-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