jenkins_pipeline_builder 1.6.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +22 -3
- data/.rubocop_todo.yml +0 -6
- data/.travis.yml +0 -1
- data/Dockerfile +30 -0
- data/README.md +1 -0
- data/jenkins_pipeline_builder.gemspec +5 -8
- data/lib/jenkins_pipeline_builder.rb +2 -2
- data/lib/jenkins_pipeline_builder/cli/describe.rb +0 -2
- data/lib/jenkins_pipeline_builder/cli/helper.rb +3 -2
- data/lib/jenkins_pipeline_builder/cli/list.rb +2 -1
- data/lib/jenkins_pipeline_builder/cli/pipeline.rb +5 -4
- data/lib/jenkins_pipeline_builder/compiler.rb +15 -2
- data/lib/jenkins_pipeline_builder/extension_set.rb +5 -1
- data/lib/jenkins_pipeline_builder/extensions.rb +6 -2
- data/lib/jenkins_pipeline_builder/extensions/build_steps.rb +1 -1
- data/lib/jenkins_pipeline_builder/extensions/helpers/job_attributes/parameters_helper.rb +2 -2
- data/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb +1 -0
- data/lib/jenkins_pipeline_builder/extensions/job_attributes.rb +24 -0
- data/lib/jenkins_pipeline_builder/extensions/publishers.rb +26 -1
- data/lib/jenkins_pipeline_builder/extensions/wrappers.rb +2 -1
- data/lib/jenkins_pipeline_builder/generator.rb +7 -2
- data/lib/jenkins_pipeline_builder/job.rb +3 -0
- data/lib/jenkins_pipeline_builder/job_collection.rb +5 -3
- data/lib/jenkins_pipeline_builder/module_registry.rb +4 -0
- data/lib/jenkins_pipeline_builder/promotion.rb +1 -0
- data/lib/jenkins_pipeline_builder/pull_request_generator.rb +12 -11
- data/lib/jenkins_pipeline_builder/remote_dependencies.rb +2 -2
- data/lib/jenkins_pipeline_builder/utils.rb +12 -7
- data/lib/jenkins_pipeline_builder/version.rb +1 -1
- data/lib/jenkins_pipeline_builder/view.rb +3 -1
- data/spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb +3 -3
- data/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb +6 -6
- data/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb +28 -11
- data/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb +3 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml +1 -0
- data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +90 -36
- data/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb +2 -2
- data/spec/lib/jenkins_pipeline_builder/job_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/promotion_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb +16 -16
- data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/utils_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/view_spec.rb +2 -2
- data/spec/requests/pipeline_spec.rb +1 -1
- metadata +20 -20
@@ -227,6 +227,7 @@ job_attribute do
|
|
227
227
|
if params[:changelog_to_branch]
|
228
228
|
opts = params[:changelog_to_branch]
|
229
229
|
raise 'remote and branch are required for changelog_to_branch' unless opts[:remote] && opts[:branch]
|
230
|
+
|
230
231
|
send('hudson.plugins.git.extensions.impl.ChangelogToBranch') do
|
231
232
|
options do
|
232
233
|
compareRemote opts[:remote]
|
@@ -264,6 +265,29 @@ job_attribute do
|
|
264
265
|
end
|
265
266
|
end
|
266
267
|
|
268
|
+
job_attribute do
|
269
|
+
name :google_chat
|
270
|
+
plugin_id 'google-chat-notification'
|
271
|
+
description 'This plugin allows your team to setup build notifications to be sent to Google Chat rooms.'
|
272
|
+
jenkins_name 'Google Chat Notification'
|
273
|
+
announced false
|
274
|
+
|
275
|
+
xml path: '//properties' do |params|
|
276
|
+
send('io.cnaik.GoogleChatNotification', 'plugin' => 'google-chat-notification') do
|
277
|
+
url params[:url] || ''
|
278
|
+
notifyAborted params[:notifyAborted] || false
|
279
|
+
notifyFailure params[:notifyFailure] || false
|
280
|
+
notifyNotBuilt params[:notifyNotBuilt] || false
|
281
|
+
notifySuccess params[:notifySuccess] || false
|
282
|
+
notifyUnstable params[:notifyUnstable] || false
|
283
|
+
notifyBackToNormal params[:notifyBackToNormal] || false
|
284
|
+
suppressInfoLoggers params[:suppressInfoLoggers] || false
|
285
|
+
sameThreadNotification params[:sameThreadNotification] || false
|
286
|
+
message params[:message] || ''
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
267
291
|
job_attribute do
|
268
292
|
name :hipchat
|
269
293
|
plugin_id 'hipchat'
|
@@ -72,6 +72,32 @@ publisher do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
publisher do
|
76
|
+
name :google_chat
|
77
|
+
plugin_id 'google-chat-notification'
|
78
|
+
description 'This plugin allows your team to setup build notifications to be sent to Google Chat rooms.'
|
79
|
+
jenkins_name 'Google Chat Notification'
|
80
|
+
announced false
|
81
|
+
|
82
|
+
version '0' do
|
83
|
+
xml do |params|
|
84
|
+
params = {} if params == true
|
85
|
+
send('io.cnaik.GoogleChatNotification') do
|
86
|
+
url params[:url] || ''
|
87
|
+
message params[:message] || ''
|
88
|
+
notifyAborted params[:notifyAborted] || false
|
89
|
+
notifyFailure params[:notifyFailure] || false
|
90
|
+
notifyNotBuilt params[:notifyNotBuilt] || false
|
91
|
+
notifySuccess params[:notifySuccess] || false
|
92
|
+
notifyUnstable params[:notifyUnstable] || false
|
93
|
+
notifyBackToNormal params[:notifyBackToNormal] || false
|
94
|
+
suppressInfoLoggers params[:suppressInfoLoggers] || false
|
95
|
+
sameThreadNotification params[:sameThreadNotification] || false
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
75
101
|
publisher do
|
76
102
|
name :hipchat
|
77
103
|
plugin_id 'hipchat'
|
@@ -382,7 +408,6 @@ publisher do
|
|
382
408
|
xml do |params|
|
383
409
|
send('hudson.plugins.sonar.SonarPublisher') do
|
384
410
|
jdk params[:jdk] || '(Inherit From Job)'
|
385
|
-
branch params[:branch] || ''
|
386
411
|
language
|
387
412
|
mavenOpts
|
388
413
|
jobAdditionalProperties params[:additional_properties] || ''
|
@@ -26,7 +26,6 @@ wrapper do
|
|
26
26
|
announced false
|
27
27
|
jenkins_name 'Color ANSI Console Output'
|
28
28
|
description 'This plugin adds support for ANSI escape sequences, including color, to Console Output.'
|
29
|
-
|
30
29
|
xml do |_|
|
31
30
|
send('hudson.plugins.ansicolor.AnsiColorBuildWrapper') do
|
32
31
|
colorMapName 'xterm'
|
@@ -99,6 +98,7 @@ wrapper do
|
|
99
98
|
passwords = wrapper
|
100
99
|
end
|
101
100
|
break unless passwords
|
101
|
+
|
102
102
|
passwordEntries do
|
103
103
|
passwords.each do |password|
|
104
104
|
EnvInjectPasswordEntry do
|
@@ -148,6 +148,7 @@ wrapper do
|
|
148
148
|
resolvePattern
|
149
149
|
matrixParams wrapper[:properties]
|
150
150
|
deployBuildInfo wrapper[:'publish-build-info']
|
151
|
+
useSpecs false
|
151
152
|
includeEnvVars false
|
152
153
|
envVarsPatterns do
|
153
154
|
includePatterns
|
@@ -56,7 +56,7 @@ module JenkinsPipelineBuilder
|
|
56
56
|
publish(project_name || job_collection.projects.first[:name])
|
57
57
|
end
|
58
58
|
|
59
|
-
def pull_request(path, project_name)
|
59
|
+
def pull_request(path, project_name, base_branch_only = false)
|
60
60
|
logger.info "Pull Request Generator Running from path #{path}"
|
61
61
|
load_job_collection path unless job_collection.loaded?
|
62
62
|
defaults = job_collection.defaults[:value]
|
@@ -64,7 +64,9 @@ module JenkinsPipelineBuilder
|
|
64
64
|
pr_generator.delete_closed_prs
|
65
65
|
errors = []
|
66
66
|
pr_generator.open_prs.each do |pr|
|
67
|
-
|
67
|
+
next if base_branch_only && defaults[:git_branch] != pr[:base]
|
68
|
+
|
69
|
+
pr_generator.convert! job_collection, pr[:number]
|
68
70
|
error = publish(project_name)
|
69
71
|
errors << error unless error.empty?
|
70
72
|
end
|
@@ -102,6 +104,7 @@ module JenkinsPipelineBuilder
|
|
102
104
|
def resolve_job_by_name(name, settings = {})
|
103
105
|
job = job_collection.get_item(name)
|
104
106
|
raise "Failed to locate job by name '#{name}'" if job.nil?
|
107
|
+
|
105
108
|
job_value = job[:value]
|
106
109
|
logger.debug "Compiling job #{name}"
|
107
110
|
compiler = JenkinsPipelineBuilder::Compiler.new self
|
@@ -211,6 +214,7 @@ module JenkinsPipelineBuilder
|
|
211
214
|
# A hash of promoted_builds names => associated job names
|
212
215
|
promotion_job_pairs = jobs.each_with_object({}) do |j, acc|
|
213
216
|
next unless j[:result][:promoted_builds]
|
217
|
+
|
214
218
|
j[:result][:promoted_builds].each do |promotion_name|
|
215
219
|
acc[promotion_name] = j[:result][:name]
|
216
220
|
end
|
@@ -235,6 +239,7 @@ module JenkinsPipelineBuilder
|
|
235
239
|
logger.info "Processing #{i}"
|
236
240
|
job = i[:result]
|
237
241
|
raise "Result is empty for #{i}" if job.nil?
|
242
|
+
|
238
243
|
job = Job.new job
|
239
244
|
success, payload = job.create_or_update
|
240
245
|
errors[job.name] = payload unless success
|
@@ -17,6 +17,7 @@ module JenkinsPipelineBuilder
|
|
17
17
|
def create_or_update
|
18
18
|
success, payload = to_xml
|
19
19
|
return success, payload unless success
|
20
|
+
|
20
21
|
xml = payload
|
21
22
|
return local_output(xml) if JenkinsPipelineBuilder.debug || JenkinsPipelineBuilder.file_mode
|
22
23
|
|
@@ -31,6 +32,7 @@ module JenkinsPipelineBuilder
|
|
31
32
|
job[:job_type] = 'free_style' unless job[:job_type]
|
32
33
|
type = job[:job_type]
|
33
34
|
return false, "Job type: #{type} is not one of #{job_methods.join(', ')}" unless known_type? type
|
35
|
+
|
34
36
|
@xml = setup_freestyle_base(job)
|
35
37
|
payload = send("update_#{type}")
|
36
38
|
|
@@ -109,6 +111,7 @@ module JenkinsPipelineBuilder
|
|
109
111
|
if params.key?(:template)
|
110
112
|
template_name = params[:template]
|
111
113
|
raise "Job template '#{template_name}' can't be resolved." unless @job_templates.key?(template_name)
|
114
|
+
|
112
115
|
params.delete(:template)
|
113
116
|
template = @job_templates[template_name]
|
114
117
|
params = template.deep_merge(params)
|
@@ -75,8 +75,8 @@ module JenkinsPipelineBuilder
|
|
75
75
|
hash.each do |section|
|
76
76
|
load_section section, remote
|
77
77
|
end
|
78
|
-
rescue StandardError =>
|
79
|
-
raise CustomErrors::ParseError.new
|
78
|
+
rescue StandardError => e
|
79
|
+
raise CustomErrors::ParseError.new e.message, path
|
80
80
|
end
|
81
81
|
|
82
82
|
def load_section(section, remote)
|
@@ -108,6 +108,7 @@ module JenkinsPipelineBuilder
|
|
108
108
|
# skip if the existing item is local and the new item is remote
|
109
109
|
return if remote && !existing_remote
|
110
110
|
raise "Duplicate item with name '#{name}' was detected." unless existing_remote && !remote
|
111
|
+
|
111
112
|
# override if the existing item is remote and the new is local
|
112
113
|
logger.info "Duplicate item with name '#{name}' was detected from the remote folder."
|
113
114
|
end
|
@@ -118,9 +119,10 @@ module JenkinsPipelineBuilder
|
|
118
119
|
path = "#{path}/extensions"
|
119
120
|
path = File.expand_path(path, Dir.getwd)
|
120
121
|
return unless File.directory?(path)
|
122
|
+
|
121
123
|
logger.info "Loading extensions from folder #{path}"
|
122
124
|
logger.info Dir.glob("#{path}/*.rb").inspect
|
123
|
-
Dir.glob("#{path}/**/*.rb").each do |file|
|
125
|
+
Dir.glob("#{path}/**/*.rb").sort.each do |file|
|
124
126
|
logger.info "Loaded #{file}"
|
125
127
|
require file
|
126
128
|
end
|
@@ -29,6 +29,7 @@ module JenkinsPipelineBuilder
|
|
29
29
|
def versions
|
30
30
|
# Return a hash with a default of 1000 so that we'll get the newest in debug
|
31
31
|
return Hash.new { |_| '1000.0' } if JenkinsPipelineBuilder.debug
|
32
|
+
|
32
33
|
@versions ||= JenkinsPipelineBuilder.client.plugin.list_installed
|
33
34
|
end
|
34
35
|
|
@@ -77,6 +78,7 @@ module JenkinsPipelineBuilder
|
|
77
78
|
def get_by_path_collection(path, registry)
|
78
79
|
item = registry[path.shift.to_sym]
|
79
80
|
return item if path.count == 0
|
81
|
+
|
80
82
|
get_by_path_collection(path, item)
|
81
83
|
end
|
82
84
|
|
@@ -88,8 +90,10 @@ module JenkinsPipelineBuilder
|
|
88
90
|
def traverse_registry(registry, params, n_xml, strict = false)
|
89
91
|
params.each do |key, value|
|
90
92
|
next unless registry.is_a? Hash
|
93
|
+
|
91
94
|
unless registry.key? key
|
92
95
|
raise TypeError, "!!!! could not find key #{key} !!!!" if strict
|
96
|
+
|
93
97
|
next
|
94
98
|
end
|
95
99
|
reg_value = registry[key]
|
@@ -31,6 +31,7 @@ module JenkinsPipelineBuilder
|
|
31
31
|
def create(params, job_name)
|
32
32
|
success, payload = prom_to_xml(params)
|
33
33
|
return success, payload unless success
|
34
|
+
|
34
35
|
xml = payload
|
35
36
|
return local_output(xml) if JenkinsPipelineBuilder.debug || JenkinsPipelineBuilder.file_mode
|
36
37
|
|
@@ -29,32 +29,33 @@ module JenkinsPipelineBuilder
|
|
29
29
|
@open_prs = active_prs defaults[:github_site], defaults[:git_org], defaults[:git_repo_name]
|
30
30
|
end
|
31
31
|
|
32
|
-
def convert!(job_collection,
|
33
|
-
job_collection.defaults[:value][:application_name] = "#{application_name}-PR#{
|
34
|
-
job_collection.defaults[:value][:pull_request_number] =
|
35
|
-
job_collection.jobs.each { |j| override j[:value],
|
32
|
+
def convert!(job_collection, pr_number)
|
33
|
+
job_collection.defaults[:value][:application_name] = "#{application_name}-PR#{pr_number}"
|
34
|
+
job_collection.defaults[:value][:pull_request_number] = pr_number.to_s
|
35
|
+
job_collection.jobs.each { |j| override j[:value], pr_number }
|
36
36
|
end
|
37
37
|
|
38
38
|
def delete_closed_prs
|
39
39
|
return if JenkinsPipelineBuilder.debug
|
40
|
+
|
40
41
|
jobs_to_delete = JenkinsPipelineBuilder.client.job.list "^#{application_name}-PR(\\d+)-(.*)$"
|
41
|
-
open_prs.each do |
|
42
|
-
jobs_to_delete.reject! { |j| j.start_with? "#{application_name}-PR#{
|
42
|
+
open_prs.each do |pr|
|
43
|
+
jobs_to_delete.reject! { |j| j.start_with? "#{application_name}-PR#{pr[:number]}" }
|
43
44
|
end
|
44
45
|
jobs_to_delete.each { |j| JenkinsPipelineBuilder.client.job.delete j }
|
45
46
|
end
|
46
47
|
|
47
48
|
private
|
48
49
|
|
49
|
-
def override(job,
|
50
|
+
def override(job, pr_number)
|
50
51
|
git_version = JenkinsPipelineBuilder.registry.registry[:job][:scm_params].installed_version
|
51
|
-
job[:scm_branch] = "origin/pr/#{
|
52
|
+
job[:scm_branch] = "origin/pr/#{pr_number}/head"
|
52
53
|
job[:scm_params] ||= {}
|
53
|
-
job[:scm_params][:refspec] = "refs/pull/#{
|
54
|
+
job[:scm_params][:refspec] = "refs/pull/#{pr_number}/head:refs/remotes/origin/pr/#{pr_number}/head"
|
54
55
|
job[:scm_params][:changelog_to_branch] ||= {}
|
55
56
|
if Gem::Version.new(2.0) < git_version
|
56
57
|
job[:scm_params][:changelog_to_branch]
|
57
|
-
.merge!(remote: 'origin', branch: "pr/#{
|
58
|
+
.merge!(remote: 'origin', branch: "pr/#{pr_number}/head")
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
@@ -66,7 +67,7 @@ module JenkinsPipelineBuilder
|
|
66
67
|
begin
|
67
68
|
resp = Net::HTTP.get_response(URI.parse(url))
|
68
69
|
pulls = JSON.parse(resp.body)
|
69
|
-
pulls.map { |p| p['number'] }
|
70
|
+
pulls.map { |p| { number: p['number'], base: p['base']['ref'] } }
|
70
71
|
rescue StandardError
|
71
72
|
raise 'Failed connecting to github!'
|
72
73
|
end
|
@@ -88,8 +88,8 @@ module JenkinsPipelineBuilder
|
|
88
88
|
def download_yaml(url, file, remote_opts = {})
|
89
89
|
entries[url] = file
|
90
90
|
logger.info "Downloading #{url} to #{file}.tar"
|
91
|
-
open("#{file}.tar", 'w') do |local_file|
|
92
|
-
open(
|
91
|
+
File.open("#{file}.tar", 'w') do |local_file|
|
92
|
+
URI.parse(url).open(remote_opts) do |remote_file|
|
93
93
|
local_file.write(Zlib::GzipReader.new(remote_file).read)
|
94
94
|
end
|
95
95
|
end
|
@@ -30,14 +30,19 @@ end
|
|
30
30
|
module JenkinsPipelineBuilder
|
31
31
|
class Utils
|
32
32
|
# Code was duplicated from jeknins_api_client
|
33
|
-
def self.symbolize_keys_deep!(
|
34
|
-
return unless
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
def self.symbolize_keys_deep!(to_symbolize)
|
34
|
+
return unless to_symbolize.is_a?(Hash)
|
35
|
+
|
36
|
+
# This lint is disabled here because each_key requires that you not add or remove keys
|
37
|
+
# during iteration, which apparently this block does...
|
38
|
+
# rubocop:disable Style/HashEachMethods
|
39
|
+
to_symbolize.keys.each do |k|
|
40
|
+
ks = k.respond_to?(:to_sym) ? k.to_sym : k
|
41
|
+
to_symbolize[ks] = to_symbolize.delete k # Preserve order even when k == ks
|
42
|
+
symbolize_keys_deep! to_symbolize[ks] if to_symbolize[ks].is_a? Hash
|
43
|
+
to_symbolize[ks].each { |item| symbolize_keys_deep!(item) } if to_symbolize[ks].is_a?(Array)
|
40
44
|
end
|
45
|
+
# rubocop:enable Style/HashEachMethods
|
41
46
|
end
|
42
47
|
|
43
48
|
def self.symbolize_with_empty_hash!(array_of_maybe_str)
|
@@ -67,6 +67,7 @@ module JenkinsPipelineBuilder
|
|
67
67
|
def create(params)
|
68
68
|
# Name is a required parameter. Raise an error if not specified
|
69
69
|
raise ArgumentError, 'Name is required for creating view' unless params.is_a?(Hash) && params[:name]
|
70
|
+
|
70
71
|
clean_up_views(params) unless JenkinsPipelineBuilder.debug
|
71
72
|
params[:type] ||= 'listview'
|
72
73
|
create_base_view(params[:name], params[:type], params[:parent_view])
|
@@ -133,7 +134,8 @@ module JenkinsPipelineBuilder
|
|
133
134
|
'dashboardView' => 'hudson.plugins.view.dashboard.Dashboard',
|
134
135
|
'multijobView' => 'com.tikal.jenkins.plugins.multijob.views.MultiJobView'
|
135
136
|
}
|
136
|
-
raise "Type #{type} is not supported by Jenkins." unless types.
|
137
|
+
raise "Type #{type} is not supported by Jenkins." unless types.key?(type)
|
138
|
+
|
137
139
|
types[type]
|
138
140
|
end
|
139
141
|
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('spec_helper', __dir__)
|
2
2
|
|
3
3
|
describe JenkinsPipelineBuilder::ExtensionSet do
|
4
|
-
subject(:set) { JenkinsPipelineBuilder::ExtensionSet.new('foo'){} }
|
4
|
+
subject(:set) { JenkinsPipelineBuilder::ExtensionSet.new('foo') {} }
|
5
5
|
|
6
6
|
before :each do
|
7
7
|
set.name 'example'
|
@@ -108,7 +108,7 @@ describe JenkinsPipelineBuilder::ExtensionSet do
|
|
108
108
|
it 'works for snapshot/beta stuff' do
|
109
109
|
ext_versions ['1.9', '2.3']
|
110
110
|
|
111
|
-
set.installed_version = '2.0-SNAPSHOT
|
111
|
+
set.installed_version = '2.0-SNAPSHOT'
|
112
112
|
# Other examples
|
113
113
|
# set.installed_version = '2.0-beta-1'
|
114
114
|
# set.installed_version = '2.0+build.93'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('../spec_helper', __dir__)
|
2
2
|
|
3
3
|
describe 'builders' do
|
4
4
|
after :each do
|
@@ -329,9 +329,9 @@ describe 'builders' do
|
|
329
329
|
|
330
330
|
begin
|
331
331
|
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
332
|
-
rescue RuntimeError =>
|
333
|
-
puts "Caught error #{
|
334
|
-
error =
|
332
|
+
rescue RuntimeError => e
|
333
|
+
puts "Caught error #{e}"
|
334
|
+
error = e.to_s
|
335
335
|
end
|
336
336
|
builder = @n_xml.root.children.first
|
337
337
|
expect(builder.name).to match 'hudson.plugins.groovy.SystemGroovy'
|
@@ -407,8 +407,8 @@ describe 'builders' do
|
|
407
407
|
)
|
408
408
|
begin
|
409
409
|
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
410
|
-
rescue RuntimeError =>
|
411
|
-
puts 'Runtime Error: ' +
|
410
|
+
rescue RuntimeError => e
|
411
|
+
puts 'Runtime Error: ' + e.to_s
|
412
412
|
end
|
413
413
|
builder = @n_xml.root.children.first
|
414
414
|
expect(builder.name).to match 'jenkins.plugins.nodejs.NodeJsCommandInterpreter'
|