class LeeroyJenkins::JobBackupper

Attributes

backup_dir[R]
jenkins_client[R]
job_names_to_backup[R]
threads[R]

Public Class Methods

new(job_names_to_backup, jenkins_client, backup_dir, threads) click to toggle source
# File lib/leeroy_jenkins/job_backupper.rb, line 5
def initialize(job_names_to_backup, jenkins_client, backup_dir, threads)
  @job_names_to_backup = job_names_to_backup
  @jenkins_client = jenkins_client
  @backup_dir = backup_dir
  @threads = threads
end

Public Instance Methods

backup(dry = true) click to toggle source
# File lib/leeroy_jenkins/job_backupper.rb, line 12
def backup(dry = true)
  Result.new(dry ? dry_run : backup!)
end

Private Instance Methods

backup!() click to toggle source
# File lib/leeroy_jenkins/job_backupper.rb, line 18
def backup!
  FileUtils.mkdir_p(backup_dir) unless Dir.exist?(backup_dir)

  pairs = Parallel.map(job_names_to_backup, in_threads: threads) do |job_name|
    job_config = jenkins_client.job.get_config(job_name)
    path = xml_file_path(job_name)
    File.write(path, job_config)
    [job_name, path]
  end

  Hash[pairs]
end
dry_run() click to toggle source
# File lib/leeroy_jenkins/job_backupper.rb, line 31
def dry_run
  pairs = job_names_to_backup.map do |job_name|
    [job_name, xml_file_path(job_name)]
  end

  Hash[pairs]
end
xml_file_path(job_name) click to toggle source
# File lib/leeroy_jenkins/job_backupper.rb, line 39
def xml_file_path(job_name)
  "#{backup_dir}/#{job_name}.xml"
end