diff options
author | Shinya Maeda <shinya@gitlab.com> | 2018-11-13 15:20:47 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2018-11-13 15:20:47 +0900 |
commit | 8fe613fd67ba7c0fb9ed6f71dca9620fe468bf7e (patch) | |
tree | 2cd86d4165e684111afd4bd9e231dd96664ff5a7 | |
parent | dbb342d4d95d24a1313c64be4a923ea5f759d3fa (diff) | |
download | gitlab-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.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 |