diff options
Diffstat (limited to 'app/models/deployment.rb')
-rw-r--r-- | app/models/deployment.rb | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/app/models/deployment.rb b/app/models/deployment.rb index 305922611a6..322b3139759 100644 --- a/app/models/deployment.rb +++ b/app/models/deployment.rb @@ -10,9 +10,7 @@ class Deployment < ActiveRecord::Base belongs_to :user belongs_to :deployable, polymorphic: true # rubocop:disable Cop/PolymorphicAssociations - has_internal_id :iid, scope: :project, init: ->(s) do - Deployment.where(project: s.project).maximum(:iid) if s&.project - end + has_internal_id :iid, scope: :project, init: ->(s) { s&.project&.deployments&.maximum(:iid) } validates :sha, presence: true validates :ref, presence: true @@ -20,6 +18,8 @@ class Deployment < ActiveRecord::Base delegate :name, to: :environment, prefix: true scope :for_environment, -> (environment) { where(environment_id: environment) } + scope :deployed, -> { success.start } + scope :stopped, -> { success.stop } state_machine :status, initial: :created do event :run do @@ -57,6 +57,11 @@ class Deployment < ActiveRecord::Base canceled: 4 } + enum action: { + start: 1, + stop: 2 + } + def self.last_for_environment(environment) ids = self .for_environment(environment) @@ -132,7 +137,7 @@ class Deployment < ActiveRecord::Base def previous_deployment @previous_deployment ||= - project.deployments.success.joins(:environment) + project.deployments.deployed.joins(:environment) .where(environments: { name: self.environment.name }, ref: self.ref) .where.not(id: self.id) .take @@ -177,6 +182,14 @@ class Deployment < ActiveRecord::Base metrics&.merge(deployment_time: finished_at.to_i) || {} end + def deployed? + success? && start? + end + + def stopped? + success? && stop? + end + private def prometheus_adapter |