Class: ChatopsDeployer::DeployJob

Inherits:
Object
  • Object
show all
Includes:
SuckerPunch::Job
Defined in:
lib/chatops_deployer/deploy_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(repository:, branch: 'master', config_file: 'chatops_deployer.yml', callback_url:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/chatops_deployer/deploy_job.rb', line 14

def perform(repository:, branch: 'master', config_file: 'chatops_deployer.yml', callback_url:)
  @branch = branch
  @project = Project.new(repository, branch, config_file)
  log_file = File.open(LOG_FILE, 'a')
  @logger = ::Logger.new(MultiIO.new($stdout, log_file)).tap do |l|
    l.progname = @project.sha1
  end

  @nginx_config = NginxConfig.new(@project)
  @container = Container.new(@project)
  [@project, @nginx_config, @container].each do |obj|
    obj.logger = @logger
  end

  Dir.chdir(@project.branch_directory) do
    @project.fetch_repo
    @project.read_config
    @nginx_config.prepare_urls
    @project.copy_files_from_deployer
    @project.setup_cache_directories
    @container.build
    @project.update_cache
  end
  @nginx_config.add_urls(@container.urls)
  callback(callback_url, :deployment_success)
rescue ChatopsDeployer::Error => e
  @logger.error(e.message)
  callback(callback_url, :deployment_failure, e.message)
end