Class: Actions::ForemanPipeline::Jenkins::Build

Inherits:
AbstractJenkinsAction show all
Defined in:
app/lib/actions/foreman_pipeline/jenkins/build.rb

Instance Method Summary collapse

Methods inherited from AbstractJenkinsAction

#jenkins_project, #job

Instance Method Details

#paramsObject



16
17
18
19
20
# File 'app/lib/actions/foreman_pipeline/jenkins/build.rb', line 16

def params
  project_params = jenkins_project.jenkins_project_params
  return {} if project_params.empty?
  template_binding project_params
end

#rescue_strategy_for_selfObject



22
23
24
# File 'app/lib/actions/foreman_pipeline/jenkins/build.rb', line 22

def rescue_strategy_for_self
  Dynflow::Action::Rescue::Skip
end

#runObject



7
8
9
10
11
12
13
14
# File 'app/lib/actions/foreman_pipeline/jenkins/build.rb', line 7

def run
  timeout = job.jenkins_instance.timeout_sec
  output[:project_name] = jenkins_project.name
  output[:build_params] = params
  output[:build_num] = job.jenkins_instance.client.job.build(jenkins_project.name, params, 'build_start_timeout' => timeout)
rescue => e
  fail "Jenkins build for #{jenkins_project.name} failed to start in a timely manner."
end

#template_binding(project_params) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'app/lib/actions/foreman_pipeline/jenkins/build.rb', line 26

def template_binding(project_params)
  host = input[:data][:host]
  activation_key = input[:data][:activation_key]
  packages = input[:data][:packages]

  project_params.each do |param|
    param.value = ERB.new(param.value).result(binding)
    param.format_bool
  end.map do |param|
    {param.name => param.value}
  end.reduce(:merge)
end