Sha256: cea3e3027528d1e8717505f0b04639eb17859a848e2d9b4b79110b26dd93263d
Contents?: true
Size: 1.02 KB
Versions: 4
Compression:
Stored size: 1.02 KB
Contents
class PerformTaskJob < BackgroundJob queue_as :deploys def perform(task) @task = task unless @task.pending? logger.error("Task ##{@task.id} already in `#{@task.status}` state. Aborting.") return end @task.run! commands = Commands.for(@task) @task.acquire_git_cache_lock do capture commands.fetch capture commands.clone end capture commands.checkout(@task.until_commit) Bundler.with_clean_env do capture_all commands.install_dependencies capture_all commands.perform end @task.complete! rescue Command::Error => error @task.report_failure!(error) rescue StandardError => error @task.report_error!(error) ensure @task.clear_working_directory end def capture_all(commands) commands.map { |c| capture(c) } end def capture(command) command.start @task.write("$ #{command}\npid: #{command.pid}\n") @task.pid = command.pid command.stream! do |line| @task.write(line) end @task.write("\n") end end
Version data entries
4 entries across 4 versions & 1 rubygems