Class: FunCi::Pipeline::StalePipelineCanceller

Inherits:
Object
  • Object
show all
Defined in:
lib/fun_ci/pipeline/stale_pipeline_canceller.rb

Instance Method Summary collapse

Constructor Details

#initialize(db:, branch:, stdout:, process_killer: nil) ⇒ StalePipelineCanceller

Returns a new instance of StalePipelineCanceller.



8
9
10
11
12
13
# File 'lib/fun_ci/pipeline/stale_pipeline_canceller.rb', line 8

def initialize(db:, branch:, stdout:, process_killer: nil)
  @db = db
  @branch = branch
  @stdout = stdout
  @process_killer = process_killer || method(:default_process_killer)
end

Instance Method Details

#cancel(new_commit_hash:) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/fun_ci/pipeline/stale_pipeline_canceller.rb', line 15

def cancel(new_commit_hash:)
  run = Persistence::PipelineRun.find_running_with_pid(@db, @branch)
  return unless run

  kill_process(run[:pid])
  Persistence::PipelineRun.update_status(@db, run[:id], "cancelled")
  @stdout.puts "Cancelled stale pipeline for #{run[:commit_hash]}. Starting fresh for #{new_commit_hash}."
end

#store_pid(run_id, pid) ⇒ Object



24
25
26
# File 'lib/fun_ci/pipeline/stale_pipeline_canceller.rb', line 24

def store_pid(run_id, pid)
  Persistence::PipelineRun.store_pid(@db, run_id, pid)
end