Class: JenkinsPipelineBuilder::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/jenkins_pipeline_builder/job.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(job) ⇒ Job

Returns a new instance of Job.



5
6
7
# File 'lib/jenkins_pipeline_builder/job.rb', line 5

def initialize(job)
  @job = job
end

Instance Attribute Details

#jobObject

Returns the value of attribute job.



3
4
5
# File 'lib/jenkins_pipeline_builder/job.rb', line 3

def job
  @job
end

Instance Method Details

#create_or_updateObject



17
18
19
20
21
22
23
24
25
26
# File 'lib/jenkins_pipeline_builder/job.rb', line 17

def create_or_update
  success, payload = to_xml
  return success, payload unless success

  xml = payload
  return local_output(xml) if JenkinsPipelineBuilder.debug || JenkinsPipelineBuilder.file_mode

  JenkinsPipelineBuilder.client.job.create_or_update(name, xml)
  [true, nil]
end

#loggerObject



13
14
15
# File 'lib/jenkins_pipeline_builder/job.rb', line 13

def logger
  JenkinsPipelineBuilder.logger
end

#nameObject



9
10
11
# File 'lib/jenkins_pipeline_builder/job.rb', line 9

def name
  job[:name]
end

#to_xmlObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/jenkins_pipeline_builder/job.rb', line 28

def to_xml
  raise 'Job name is not specified' unless name

  logger.info "Creating Yaml Job #{job}"
  job[:job_type] = 'free_style' unless job[:job_type]
  type = job[:job_type]
  return false, "Job type: #{type} is not one of #{job_methods.join(', ')}" unless known_type? type

  @xml = setup_freestyle_base(job)
  payload = send("update_#{type}")

  [true, payload]
end