jenkins_pipeline_builder 0.7.6 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27bfce0d8e1ed49ce1f7d1712159c7085aab313e
4
- data.tar.gz: d441dec1b686f09b8fc0a31f8f29c429ff2c33b4
3
+ metadata.gz: 2ca43becc8a1b41d7db4b5eed240b85f9924ab91
4
+ data.tar.gz: cb8dc5088ab19da3cde68b8b09782d8e002b662b
5
5
  SHA512:
6
- metadata.gz: 73cf874e69635ebcb6e463d190bca2672c9f05dfbde153167abb70e4e333d55cc4aa122ae7c3518e36998d444162c548d41231440a85d4cf35609958d77224da
7
- data.tar.gz: 572698d42843aa3a019ac5a3642f87282450e3c9bc0d69d146b17de3d21a9e2aca784b096b1073d38f255f75ea876bd9f2c2da1771f7e8473d454f29123f1863
6
+ metadata.gz: 550a353d6674f1efd02be4a10bcb242684ae0e0e2675b419deabdc5b68cbfcb9923d87159f273b02f540a9a572dae9d4c34e3ffbf761970209fe7ed3f321d70a
7
+ data.tar.gz: 7e2e5a8ef0954ec7b947444bae305a24e965439c369e9d9a96af10ec3e4cf74aaa836a79a07aa034c45aa4654e0b02dc73763e95cfc1c2cb635302aabd9b1f20
data/.rubocop.yml CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  #######
9
9
  # WIP
10
- Style/CyclomaticComplexity:
10
+ Metrics/CyclomaticComplexity:
11
11
  Max: 9
12
12
 
13
13
  Metrics/PerceivedComplexity:
@@ -16,14 +16,14 @@ Metrics/PerceivedComplexity:
16
16
  ########
17
17
  # Fix these later
18
18
  # Configuration parameters: CountComments.
19
- Style/ClassLength:
19
+ Metrics/ClassLength:
20
20
  #Enabled: false
21
21
  Max: 500
22
22
 
23
23
  #######
24
24
  # Finalized settings
25
25
 
26
- Style/LineLength:
26
+ Metrics/LineLength:
27
27
  Max: 120
28
28
  Exclude:
29
29
  - 'spec/lib/jenkins_pipeline_builder/compiler_spec.rb'
@@ -32,7 +32,7 @@ Style/LineLength:
32
32
  - 'lib/jenkins_pipeline_builder/extensions/*'
33
33
 
34
34
  # Configuration parameters: CountComments.
35
- Style/MethodLength:
35
+ Metrics/MethodLength:
36
36
  Max: 25
37
37
 
38
38
  Style/Documentation:
data/README.md CHANGED
@@ -73,7 +73,6 @@ Now you ready to bootstrap a pipeline:
73
73
  generate pipeline -c config/login.yml bootstrap ./pipeline
74
74
 
75
75
  NOTE: you can run the pipeline in NOOP (debug-only) mode by addind -d parameter, like:
76
-
77
76
  generate pipeline -d -c config/login.yml bootstrap ./pipeline
78
77
 
79
78
  The command comes with fairly extensive help. For example you can list all of the registered extension types with `generate list` and a list of all extensions of a type with `generate list type`
@@ -359,6 +358,7 @@ publisher do
359
358
  min_version '0.4'
360
359
  jenkins_name "Jenkins UI Name"
361
360
  description "Description of this feature"
361
+ params[:thing, :value]
362
362
 
363
363
  xml do |params, xml|
364
364
  send("new_element") do
@@ -371,6 +371,57 @@ publisher do
371
371
  end
372
372
  ```
373
373
 
374
+ You can also declare multiple versions of an extension. Some plugins have breaking xml changes between versions. Simply declare a version block with the minimum required version and then declare your xml, before and after blocks inside that version.
375
+
376
+ ```ruby
377
+ publisher do
378
+ name :yaml_name
379
+ plugin_id 123
380
+ min_version '0.4'
381
+ jenkins_name "Jenkins UI Name"
382
+ description "Description of this feature"
383
+
384
+ version '0' do
385
+ before do
386
+ # preprocessing here
387
+ end
388
+
389
+ after do
390
+ # post processing here
391
+ end
392
+
393
+ xml do |params, xml|
394
+ send("new.element") do
395
+ property params[:value]
396
+ if params[:thing]
397
+ thing 'true'
398
+ end
399
+ end
400
+ end
401
+ end
402
+
403
+ version '1.0' do
404
+ before do
405
+ # preprocessing here
406
+ end
407
+
408
+ after do
409
+ # post processing here
410
+ end
411
+
412
+ xml do |params, xml|
413
+ send("different.element") do
414
+ property params[:value]
415
+ if params[:thing]
416
+ thing 'true'
417
+ end
418
+ end
419
+ end
420
+ end
421
+ end
422
+ ```
423
+
424
+
374
425
  Finally, you can add the new DSL in your YAML:
375
426
 
376
427
  ```yaml
@@ -139,7 +139,19 @@ module JenkinsPipelineBuilder
139
139
  blocks.merge other_set.blocks
140
140
  end
141
141
 
142
+ def parameters(params)
143
+ version = @min_version || '0'
144
+
145
+ blocks[version] = {} unless blocks[version]
146
+ blocks[version][:parameters] = params
147
+ end
148
+
142
149
  def xml(path: false, version: '0', &block)
150
+ if @min_version
151
+ version = @min_version
152
+ elsif version != '0'
153
+ deprecation_warning(settings[:name], 'xml')
154
+ end
143
155
  unless block
144
156
  fail "no block found for version #{version}" unless blocks.key version
145
157
  return blocks[version][:block]
@@ -151,8 +163,19 @@ module JenkinsPipelineBuilder
151
163
  end
152
164
  end
153
165
 
166
+ def version(ver, &block)
167
+ @min_version = ver
168
+ yield block
169
+ end
170
+
154
171
  [:after, :before].each do |method_name|
155
172
  define_method method_name do |version: '0', &block|
173
+ if @min_version
174
+ version = @min_version
175
+ elsif version != '0'
176
+ deprecation_warning(settings[:name], method_name)
177
+ end
178
+
156
179
  return instance_variable_get(method_name) unless block
157
180
  blocks[version] = {} unless blocks[version]
158
181
  blocks[version][method_name] = block
@@ -172,6 +195,12 @@ module JenkinsPipelineBuilder
172
195
  end
173
196
  errors
174
197
  end
198
+
199
+ private
200
+
201
+ def deprecation_warning(name, block)
202
+ puts "WARNING: #{name} set the version in the #{block} block, this is deprecated. Please use a version block."
203
+ end
175
204
  end
176
205
  end
177
206
 
@@ -188,7 +217,8 @@ module JenkinsPipelineBuilder
188
217
  type: false,
189
218
  before: false,
190
219
  after: false,
191
- xml: false
220
+ xml: false,
221
+ parameters: []
192
222
  }
193
223
  EXT_METHODS.keys.each do |method_name|
194
224
  define_method method_name do |value = nil|
@@ -60,88 +60,118 @@ job_attribute do
60
60
  jenkins_name "Git (inside 'Source Code Management')"
61
61
  announced false
62
62
 
63
- # XML preprocessing
64
- # TODO: Actually figure out how to merge using the builder DSL
65
- # This delete the things we are going to add later is pretty crappy
66
- # Alternately don't use/tweak the xml the api client generates
67
- # (which is where I assume this is coming from)
68
- before do |params|
69
- xpath('//scm/localBranch').remove if params[:local_branch]
70
- xpath('//scm/recursiveSubmodules').remove if params[:recursive_update]
71
- xpath('//scm/wipeOutWorkspace').remove if params[:wipe_workspace]
72
- xpath('//scm/excludedUsers').remove if params[:excluded_users]
73
- if params[:remote_name] || params[:refspec]
74
- remote_url = xpath('//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').first
75
- params[:remote_url] = remote_url.content if remote_url
76
- xpath('//scm/userRemoteConfigs').remove
63
+ version '0' do
64
+ parameters [
65
+ :remote_name,
66
+ :refspec,
67
+ :local_branch,
68
+ :recursive_update,
69
+ :wipe_workspace,
70
+ :excluded_users,
71
+ :skip_tag,
72
+ :remote_url,
73
+ :excluded_regions,
74
+ :included_regions
75
+ ]
76
+
77
+ # XML preprocessing
78
+ # TODO: Actually figure out how to merge using the builder DSL
79
+ # This delete the things we are going to add later is pretty crappy
80
+ # Alternately don't use/tweak the xml the api client generates
81
+ # (which is where I assume this is coming from)
82
+ before do |params|
83
+ xpath('//scm/localBranch').remove if params[:local_branch]
84
+ xpath('//scm/recursiveSubmodules').remove if params[:recursive_update]
85
+ xpath('//scm/wipeOutWorkspace').remove if params[:wipe_workspace]
86
+ xpath('//scm/excludedUsers').remove if params[:excluded_users]
87
+ if params[:remote_name] || params[:refspec]
88
+ remote_url = xpath('//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').first
89
+ params[:remote_url] = remote_url.content if remote_url
90
+ xpath('//scm/userRemoteConfigs').remove
91
+ end
92
+ xpath('//scm/skipTag').remove if params[:skip_tag]
93
+ xpath('//scm/excludedRegions').remove if params[:excluded_regions]
94
+ xpath('//scm/includedRegions').remove if params[:included_regions]
77
95
  end
78
- xpath('//scm/skipTag').remove if params[:skip_tag]
79
- xpath('//scm/excludedRegions').remove if params[:excluded_regions]
80
- xpath('//scm/includedRegions').remove if params[:included_regions]
81
- end
82
96
 
83
- before version: '2.0' do |params|
84
- if params[:remote_name] || params[:refspec]
85
- remote_url = xpath('//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').first
86
- params[:remote_url] = remote_url.content if remote_url
87
- xpath('//scm/userRemoteConfigs').remove
97
+ xml path: '//scm' do |params|
98
+ localBranch params[:local_branch] if params[:local_branch]
99
+ recursiveSubmodules params[:recursive_update] if params[:recursive_update]
100
+ wipeOutWorkspace params[:wipe_workspace] if params[:wipe_workspace]
101
+ excludedUsers params[:excluded_users] if params[:excluded_users]
102
+ if params[:remote_name] || params[:refspec]
103
+ userRemoteConfigs do
104
+ send('hudson.plugins.git.UserRemoteConfig') do
105
+ name params[:remote_name] if params[:remote_name]
106
+ refspec params[:refspec] if params[:refspec]
107
+ url params[:remote_url] if params[:remote_url]
108
+ end
109
+ end
110
+ end
111
+ skipTag params[:skip_tag] if params[:skip_tag]
112
+ excludedRegions params[:excluded_regions] if params[:excluded_regions]
113
+ includedRegions params[:included_regions] if params[:included_regions]
88
114
  end
89
115
  end
90
116
 
91
- xml path: '//scm' do |params|
92
- localBranch params[:local_branch] if params[:local_branch]
93
- recursiveSubmodules params[:recursive_update] if params[:recursive_update]
94
- wipeOutWorkspace params[:wipe_workspace] if params[:wipe_workspace]
95
- excludedUsers params[:excluded_users] if params[:excluded_users]
96
- if params[:remote_name] || params[:refspec]
117
+ version '2.0' do
118
+ parameters [
119
+ :credentials_id,
120
+ :excluded_regions,
121
+ :excluded_users,
122
+ :included_regions,
123
+ :local_branch,
124
+ :recursive_update,
125
+ :refspec,
126
+ :remote_name,
127
+ :remote_url,
128
+ :wipe_workspace
129
+ ]
130
+
131
+ before do |params|
132
+ if params[:remote_name] || params[:refspec]
133
+ remote_url = xpath('//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').first
134
+ params[:remote_url] = remote_url.content if remote_url
135
+ xpath('//scm/userRemoteConfigs').remove
136
+ end
137
+ end
138
+
139
+ xml path: '//scm' do |params|
140
+ configVersion 2
97
141
  userRemoteConfigs do
98
142
  send('hudson.plugins.git.UserRemoteConfig') do
99
143
  name params[:remote_name] if params[:remote_name]
100
144
  refspec params[:refspec] if params[:refspec]
101
145
  url params[:remote_url] if params[:remote_url]
146
+ credentialsId params[:credentials_id] if params[:credentials_id]
102
147
  end
103
148
  end
104
- end
105
- skipTag params[:skip_tag] if params[:skip_tag]
106
- excludedRegions params[:excluded_regions] if params[:excluded_regions]
107
- includedRegions params[:included_regions] if params[:included_regions]
108
- end
109
-
110
- xml version: '2.0', path: '//scm' do |params|
111
- configVersion 2
112
- userRemoteConfigs do
113
- send('hudson.plugins.git.UserRemoteConfig') do
114
- name params[:remote_name] if params[:remote_name]
115
- refspec params[:refspec] if params[:refspec]
116
- url params[:remote_url] if params[:remote_url]
117
- credentialsId params[:credentials_id] if params[:credentials_id]
118
- end
119
- end
120
- doGenerateSubmoduleConfigurations false
121
- submoduleCfg
122
- extensions do
123
- send('hudson.plugins.git.extensions.impl.WipeWorkspace') if params[:wipe_workspace]
124
- if params[:local_branch]
125
- send('hudson.plugins.git.extensions.impl.LocalWorkspace') do
126
- localBranch params[:local_branch]
149
+ doGenerateSubmoduleConfigurations false
150
+ submoduleCfg
151
+ extensions do
152
+ send('hudson.plugins.git.extensions.impl.WipeWorkspace') if params[:wipe_workspace]
153
+ if params[:local_branch]
154
+ send('hudson.plugins.git.extensions.impl.LocalWorkspace') do
155
+ localBranch params[:local_branch]
156
+ end
127
157
  end
128
- end
129
- if params[:recursive_update]
130
- send('hudson.plugins.git.extensions.impl.SubmoduleOption') do
131
- disableSubmodules false
132
- recursiveSubmodules true
133
- trackingSubmodules false
158
+ if params[:recursive_update]
159
+ send('hudson.plugins.git.extensions.impl.SubmoduleOption') do
160
+ disableSubmodules false
161
+ recursiveSubmodules true
162
+ trackingSubmodules false
163
+ end
134
164
  end
135
- end
136
- if params[:excluded_users]
137
- send('hudson.plugins.git.extensions.impl.UserExclusion') do
138
- excludedUser params[:excluded_users]
165
+ if params[:excluded_users]
166
+ send('hudson.plugins.git.extensions.impl.UserExclusion') do
167
+ excludedUser params[:excluded_users]
168
+ end
139
169
  end
140
- end
141
- if params[:included_regions] || params[:excluded_regions]
142
- send('hudson.plugins.git.extensions.impl.PathRestrictions') do
143
- includedRegions params[:included_regions] if params[:included_regions]
144
- excludedRegions params[:excluded_regions] if params[:excluded_regions]
170
+ if params[:included_regions] || params[:excluded_regions]
171
+ send('hudson.plugins.git.extensions.impl.PathRestrictions') do
172
+ includedRegions params[:included_regions] if params[:included_regions]
173
+ excludedRegions params[:excluded_regions] if params[:excluded_regions]
174
+ end
145
175
  end
146
176
  end
147
177
  end
@@ -26,6 +26,7 @@ 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
+ parameters false
29
30
  xml do |_|
30
31
  send('hudson.plugins.ansicolor.AnsiColorBuildWrapper') do
31
32
  colorMapName 'xterm'
@@ -53,26 +54,30 @@ wrapper do
53
54
  announced false
54
55
  description 'rvm plugin'
55
56
 
56
- xml version: '0.5' do |wrapper|
57
- send('ruby-proxy-object') do
58
- send('ruby-object', 'ruby-class' => 'Jenkins::Tasks::BuildWrapperProxy', 'pluginid' => 'rvm') do
59
- object('ruby-class' => 'RvmWrapper', 'pluginid' => 'rvm') do
60
- impl('pluginid' => 'rvm', 'ruby-class' => 'String') { text wrapper }
57
+ version '0.5' do
58
+ xml do |wrapper|
59
+ send('ruby-proxy-object') do
60
+ send('ruby-object', 'ruby-class' => 'Jenkins::Tasks::BuildWrapperProxy', 'pluginid' => 'rvm') do
61
+ object('ruby-class' => 'RvmWrapper', 'pluginid' => 'rvm') do
62
+ impl('pluginid' => 'rvm', 'ruby-class' => 'String') { text wrapper }
63
+ end
64
+ pluginid(:pluginid => 'rvm', 'ruby-class' => 'String') { text 'rvm' }
61
65
  end
62
- pluginid(:pluginid => 'rvm', 'ruby-class' => 'String') { text 'rvm' }
63
66
  end
64
67
  end
65
68
  end
66
69
 
67
- xml do |wrapper|
68
- send('ruby-proxy-object') do
69
- send('ruby-object', 'ruby-class' => 'Jenkins::Plugin::Proxies::BuildWrapper', 'pluginid' => 'rvm') do
70
- object('ruby-class' => 'RvmWrapper', 'pluginid' => 'rvm') do
71
- impl('pluginid' => 'rvm', 'ruby-class' => 'String') do
72
- text wrapper
70
+ version '0' do
71
+ xml do |wrapper|
72
+ send('ruby-proxy-object') do
73
+ send('ruby-object', 'ruby-class' => 'Jenkins::Plugin::Proxies::BuildWrapper', 'pluginid' => 'rvm') do
74
+ object('ruby-class' => 'RvmWrapper', 'pluginid' => 'rvm') do
75
+ impl('pluginid' => 'rvm', 'ruby-class' => 'String') do
76
+ text wrapper
77
+ end
73
78
  end
79
+ pluginid(:pluginid => 'rvm', 'ruby-class' => 'String') { text 'rvm' }
74
80
  end
75
- pluginid(:pluginid => 'rvm', 'ruby-class' => 'String') { text 'rvm' }
76
81
  end
77
82
  end
78
83
  end
@@ -523,7 +523,7 @@ module JenkinsPipelineBuilder
523
523
  end
524
524
 
525
525
  xml = client.job.build_freestyle_config(params)
526
- n_xml = Nokogiri::XML(xml)
526
+ n_xml = Nokogiri::XML(xml, &:noblanks)
527
527
 
528
528
  logger.debug 'Loading the required modules'
529
529
  @module_registry.traverse_registry_path('job', params, n_xml)
@@ -93,7 +93,8 @@ module JenkinsPipelineBuilder
93
93
  if reg_value.is_a? ExtensionSet
94
94
  ext = reg_value.extension
95
95
  logger.debug "Using #{ext.type} #{ext.name} version #{ext.min_version}"
96
- execute_extension ext, value, n_xml
96
+ success = execute_extension ext, value, n_xml
97
+ fail 'Encountered errors compiling the xml' unless success
97
98
  elsif value.is_a? Hash
98
99
  traverse_registry reg_value, value, n_xml, true
99
100
  elsif value.is_a? Array
@@ -105,12 +106,28 @@ module JenkinsPipelineBuilder
105
106
  end
106
107
 
107
108
  def execute_extension(extension, value, n_xml)
109
+ errors = []
110
+ params = extension.parameters
111
+ if params == false || params.any?
112
+ if value.is_a? Hash
113
+ value.each_key do |key|
114
+ next if params && params.include?(key)
115
+ errors << "Extension #{extension.name} does not support parameter #{key}"
116
+ end
117
+ end
118
+ end
119
+ errors.each do |error|
120
+ logger.error error
121
+ end
122
+ return false if errors.any?
123
+
108
124
  n_builders = n_xml.xpath(extension.path).first
109
125
  n_builders.instance_exec(value, &extension.before) if extension.before
110
126
  Nokogiri::XML::Builder.with(n_builders) do |xml|
111
127
  xml.instance_exec value, &extension.xml
112
128
  end
113
129
  n_builders.instance_exec(value, &extension.after) if extension.after
130
+ true
114
131
  end
115
132
  end
116
133
  end
@@ -21,5 +21,5 @@
21
21
  #
22
22
 
23
23
  module JenkinsPipelineBuilder
24
- VERSION = '0.7.6'
24
+ VERSION = '0.8.0'
25
25
  end
@@ -91,7 +91,12 @@ describe 'job_attributes' do
91
91
  recursive_update: true,
92
92
  excluded_users: :exclude_me,
93
93
  included_regions: :included_region,
94
- excluded_regions: :excluded_region
94
+ excluded_regions: :excluded_region,
95
+ wipe_workspace: true,
96
+ remote_name: :foo,
97
+ refspec: :refspec,
98
+ remote_url: :remote_url,
99
+ credentials_id: :creds
95
100
  },
96
101
  scm_url: 'http://foo.com'
97
102
  }
@@ -107,6 +112,10 @@ describe 'job_attributes' do
107
112
  expect(scm_config.css('excludedUser').first).to be_truthy
108
113
  expect(scm_config.css('includedRegions').first).to be_truthy
109
114
  expect(scm_config.css('excludedRegions').first).to be_truthy
115
+ expect(scm_config.css('credentialsId').first).to be_truthy
116
+ expect(
117
+ scm_config.xpath('//scm/extensions/hudson.plugins.git.extensions.impl.WipeWorkspace').first
118
+ ).to_not be_nil
110
119
 
111
120
  expect(scm_config.css('disableSubmodules').first.content).to eq 'false'
112
121
  expect(scm_config.css('recursiveSubmodules').first.content).to eq 'true'
@@ -115,6 +124,7 @@ describe 'job_attributes' do
115
124
  expect(scm_config.css('excludedUser').first.content).to eq 'exclude_me'
116
125
  expect(scm_config.css('includedRegions').first.content).to eq 'included_region'
117
126
  expect(scm_config.css('excludedRegions').first.content).to eq 'excluded_region'
127
+ expect(scm_config.css('credentialsId').first.content).to eq 'creds'
118
128
  end
119
129
  end
120
130
 
@@ -0,0 +1,62 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe 'wrappers' do
4
+ after :each do
5
+ JenkinsPipelineBuilder.registry.clear_versions
6
+ end
7
+
8
+ before :all do
9
+ JenkinsPipelineBuilder.credentials = {
10
+ server_ip: '127.0.0.1',
11
+ server_port: 8080,
12
+ username: 'username',
13
+ password: 'password',
14
+ log_location: '/dev/null'
15
+ }
16
+ end
17
+
18
+ before :each do
19
+ builder = Nokogiri::XML::Builder.new { |xml| xml.buildWrappers }
20
+ @n_xml = builder.doc
21
+ end
22
+
23
+ after :each do |example|
24
+ name = example.description.gsub ' ', '_'
25
+ File.open("./out/xml/wrapper_#{name}.xml", 'w') { |f| @n_xml.write_xml_to f }
26
+ end
27
+
28
+ context 'ansicolor' do
29
+ before :each do
30
+ JenkinsPipelineBuilder.registry.registry[:job][:wrappers][:ansicolor].installed_version = '0.0'
31
+ end
32
+
33
+ it 'generates correct xml' do
34
+ JenkinsPipelineBuilder.registry.traverse_registry_path('job', { wrappers: { ansicolor: true } }, @n_xml)
35
+
36
+ node = @n_xml.root.xpath('//buildWrappers/hudson.plugins.ansicolor.AnsiColorBuildWrapper')
37
+ expect(node.first).to be_truthy
38
+ expect(node.first.content).to eq 'xterm'
39
+ end
40
+
41
+ it 'fails parameters are passed' do
42
+ params = { wrappers: { ansicolor: { config: false } } }
43
+ expect do
44
+ JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
45
+ end.to raise_error
46
+ end
47
+ end
48
+
49
+ context 'timestamp' do
50
+ before :each do
51
+ JenkinsPipelineBuilder.registry.registry[:job][:wrappers][:timestamp].installed_version = '0.0'
52
+ end
53
+
54
+ it 'generates correct xml' do
55
+ JenkinsPipelineBuilder.registry.traverse_registry_path('job', { wrappers: { timestamp: true } }, @n_xml)
56
+
57
+ node = @n_xml.root.xpath('//buildWrappers/hudson.plugins.timestamper.TimestamperBuildWrapper')
58
+ expect(node.first).to_not be_nil
59
+ end
60
+ end
61
+
62
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jenkins_pipeline_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Moochnick
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-23 00:00:00.000000000 Z
12
+ date: 2014-09-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -359,6 +359,7 @@ files:
359
359
  - spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb
360
360
  - spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb
361
361
  - spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb
362
+ - spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb
362
363
  - spec/lib/jenkins_pipeline_builder/extensions_spec.rb
363
364
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml
364
365
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml
@@ -410,6 +411,7 @@ test_files:
410
411
  - spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb
411
412
  - spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb
412
413
  - spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb
414
+ - spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb
413
415
  - spec/lib/jenkins_pipeline_builder/extensions_spec.rb
414
416
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml
415
417
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml