informar cuando falla la generación del sitio
This commit is contained in:
parent
5c3bdbe4ee
commit
b880cdea36
2 changed files with 27 additions and 20 deletions
|
@ -2,43 +2,50 @@
|
|||
|
||||
# Realiza el deploy de un sitio
|
||||
class DeployJob < ApplicationJob
|
||||
class DeployException < StandardError; end
|
||||
|
||||
# rubocop:disable Metrics/MethodLength
|
||||
def perform(site)
|
||||
ActiveRecord::Base.connection_pool.with_connection do
|
||||
site = Site.find(site)
|
||||
site.update_attribute :status, 'building'
|
||||
@site = Site.find(site)
|
||||
@site.update_attribute :status, 'building'
|
||||
# Asegurarse que DeployLocal sea el primero!
|
||||
deployed = { deploy_local: deploy_local(site) }
|
||||
@deployed = { deploy_local: deploy_locally }
|
||||
|
||||
# No es opcional
|
||||
unless deployed[:deploy_local]
|
||||
site.update_attribute :status, 'waiting'
|
||||
raise
|
||||
unless @deployed[:deploy_local]
|
||||
@site.update_attribute :status, 'waiting'
|
||||
raise DeployException, deploy_local.build_stats.last.log
|
||||
end
|
||||
|
||||
deploy_others site, deployed
|
||||
notify_usuaries site, deployed
|
||||
|
||||
site.update_attribute :status, 'waiting'
|
||||
deploy_others
|
||||
notify_usuaries
|
||||
@site.update_attribute :status, 'waiting'
|
||||
end
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength
|
||||
|
||||
private
|
||||
|
||||
def deploy_local(site)
|
||||
site.deploys.find_by(type: 'DeployLocal').deploy
|
||||
def deploy_local
|
||||
@deploy_local ||= @site.deploys.find_by(type: 'DeployLocal')
|
||||
end
|
||||
|
||||
def deploy_others(site, deployed)
|
||||
site.deploys.where.not(type: 'DeployLocal').find_each do |d|
|
||||
deployed[d.type.underscore.to_sym] = d.deploy
|
||||
def deploy_locally
|
||||
deploy_local.deploy
|
||||
end
|
||||
|
||||
def deploy_others
|
||||
@site.deploys.where.not(type: 'DeployLocal').find_each do |d|
|
||||
@deployed[d.type.underscore.to_sym] = d.deploy
|
||||
end
|
||||
end
|
||||
|
||||
def notify_usuaries(site, deployed)
|
||||
def notify_usuaries
|
||||
# TODO: existe site.usuaries_ids?
|
||||
site.usuaries.find_each do |usuarie|
|
||||
DeployMailer.with(usuarie: usuarie.id, site: site.id)
|
||||
.deployed(deployed)
|
||||
@site.usuaries.find_each do |usuarie|
|
||||
DeployMailer.with(usuarie: usuarie.id, site: @site.id)
|
||||
.deployed(@deployed)
|
||||
.deliver_now
|
||||
end
|
||||
end
|
||||
|
|
|
@ -65,7 +65,7 @@ class Deploy < ApplicationRecord
|
|||
stat.bytes = size
|
||||
stat.save
|
||||
|
||||
r.try :exited?
|
||||
r.try :success?
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue