jenkins_pipeline_builder 0.11.2 → 0.12.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 +8 -8
- data/.rubocop.yml +1 -1
- data/lib/jenkins_pipeline_builder/cli/helper.rb +1 -0
- data/lib/jenkins_pipeline_builder/extensions/builders.rb +56 -0
- data/lib/jenkins_pipeline_builder/extensions/job_attributes.rb +9 -2
- data/lib/jenkins_pipeline_builder/extensions/publishers.rb +1 -1
- data/lib/jenkins_pipeline_builder/generator.rb +23 -13
- data/lib/jenkins_pipeline_builder/version.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb +3 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb +20 -0
- data/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb +2 -1
- data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTI4NWI4YWJjMDk4MzJiNzgzMTAwZWJhYzE0ZDJmYTQzYWFlZDEyYw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmJiMGY3NzU0ODEwY2ZkMzUyZGZjOTQzZTlmZGRkMTRiMzVkMDIxMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTVjYmM2M2E4MjZiM2RjNTQ3OTIyZTdlMTgxOTE3MGMzZGQyZmQ4M2VlNTgz
|
10
|
+
YTVmZmQxZGFjZjU0YmZjNDYxM2Q4MWI0ZTlmZmYxZGQ0YTBkOGVkMGEzYzMz
|
11
|
+
YTY4ZjM2OTVmMDI2NWNlMzc4ZTZiNTE0M2JhM2E4ZDY1MGFhYmI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWM5MzhiOGU2MGY5NWMzZGU4NGVjYTc3NzdhYjlhNzEzZDNjN2Q2YTg3NTVk
|
14
|
+
YzYxYjgwZDJkMzY1YTgxODk0Y2M5ZmVhOGUyZWNmZGE4NzBiMmNlYmE3ZmFk
|
15
|
+
NDIyMzY0NDU1ZTJjNzRhYzVjMTEyMWU2Y2U3MzkxYzlhMjQ1Y2Y=
|
data/.rubocop.yml
CHANGED
@@ -296,3 +296,59 @@ builder do
|
|
296
296
|
end
|
297
297
|
end
|
298
298
|
end
|
299
|
+
|
300
|
+
builder do
|
301
|
+
name :checkmarx_scan
|
302
|
+
plugin_id 'checkmarx'
|
303
|
+
description 'Jenkins plugin for checkmarx security audit'
|
304
|
+
jenkins_name 'Trigger a checkmarx security audit of your build'
|
305
|
+
announced false
|
306
|
+
parameters [
|
307
|
+
:serverUrl,
|
308
|
+
:useOwnServerCredentials,
|
309
|
+
:username,
|
310
|
+
:password,
|
311
|
+
:incremental,
|
312
|
+
:isThisBuildIncremental,
|
313
|
+
:projectName,
|
314
|
+
:groupId,
|
315
|
+
:skipSCMTriggers,
|
316
|
+
:waitForResultsEnabled,
|
317
|
+
:vulnerabilityThresholdEnabled,
|
318
|
+
:highThreshold,
|
319
|
+
:mediumThreshold,
|
320
|
+
:lowThreshold,
|
321
|
+
:preset,
|
322
|
+
:presetSpecified,
|
323
|
+
:generatePdfReport,
|
324
|
+
:excludeFolders,
|
325
|
+
:fullScansScheduled,
|
326
|
+
:filterPattern
|
327
|
+
]
|
328
|
+
|
329
|
+
xml do |params|
|
330
|
+
send('com.checkmarx.jenkins.CxScanBuilder', 'plugin' => 'checkmarx@7.1.8-24') do
|
331
|
+
useOwnServerCredentials params[:useOwnServerCredentials]
|
332
|
+
serverUrl params[:serverUrl]
|
333
|
+
useOwnServerCredentials params[:useOwnServerCredentials]
|
334
|
+
username params[:username]
|
335
|
+
password params[:password]
|
336
|
+
incremental params[:incremental]
|
337
|
+
isThisBuildIncremental params[:isThisBuildIncremental]
|
338
|
+
projectName params[:projectName]
|
339
|
+
groupId params[:groupId]
|
340
|
+
skipSCMTriggers params[:skipSCMTriggers]
|
341
|
+
waitForResultsEnabled params[:waitForResultsEnabled]
|
342
|
+
vulnerabilityThresholdEnabled params[:vulnerabilityThresholdEnabled]
|
343
|
+
highThreshold params[:highThreshold]
|
344
|
+
mediumThreshold params[:mediumThreshold]
|
345
|
+
lowThreshold params[:lowThreshold]
|
346
|
+
generatePdfReport params[:generatePdfReport]
|
347
|
+
excludeFolders params[:excludeFolders]
|
348
|
+
presetSpecified params[:presetSpecified]
|
349
|
+
preset params[:preset]
|
350
|
+
fullScansScheduled params[:fullScansScheduled]
|
351
|
+
filterPattern params[:filterPattern]
|
352
|
+
end
|
353
|
+
end
|
354
|
+
end
|
@@ -77,8 +77,7 @@ job_attribute do
|
|
77
77
|
# XML preprocessing
|
78
78
|
# TODO: Actually figure out how to merge using the builder DSL
|
79
79
|
# This delete the things we are going to add later is pretty crappy
|
80
|
-
# Alternately don't use/tweak the xml the
|
81
|
-
# (which is where I assume this is coming from)
|
80
|
+
# Alternately don't use/tweak the xml the jenkins_api_client generates
|
82
81
|
before do |params|
|
83
82
|
xpath('//scm/localBranch').remove if params[:local_branch]
|
84
83
|
xpath('//scm/recursiveSubmodules').remove if params[:recursive_update]
|
@@ -126,13 +125,20 @@ job_attribute do
|
|
126
125
|
:refspec,
|
127
126
|
:remote_name,
|
128
127
|
:remote_url,
|
128
|
+
:skip_tag,
|
129
129
|
:wipe_workspace
|
130
130
|
]
|
131
131
|
|
132
132
|
before do |params|
|
133
133
|
remote_url = xpath('//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url').first
|
134
134
|
params[:remote_url] = remote_url.content if remote_url
|
135
|
+
|
136
|
+
# XML preprocessing
|
137
|
+
# TODO: Actually figure out how to merge using the builder DSL
|
138
|
+
# This delete the things we are going to add later is pretty crappy
|
139
|
+
# Alternately don't use/tweak the xml the jenkins_api_client generates
|
135
140
|
xpath('//scm/userRemoteConfigs').remove
|
141
|
+
xpath('//scm/skipTag').remove if params[:skip_tag]
|
136
142
|
end
|
137
143
|
|
138
144
|
xml path: '//scm' do |params|
|
@@ -147,6 +153,7 @@ job_attribute do
|
|
147
153
|
end
|
148
154
|
doGenerateSubmoduleConfigurations false
|
149
155
|
submoduleCfg
|
156
|
+
skipTag params[:skip_tag] if params[:skip_tag]
|
150
157
|
extensions do
|
151
158
|
if params[:changelog_to_branch]
|
152
159
|
opts = params[:changelog_to_branch]
|
@@ -205,21 +205,31 @@ module JenkinsPipelineBuilder
|
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
208
|
-
def
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
return { project_name: 'Failed to resolve' }
|
217
|
-
end
|
208
|
+
def create_jobs_and_views(project)
|
209
|
+
success, payload = resolve_project(project)
|
210
|
+
if success
|
211
|
+
logger.info 'successfully resolved project'
|
212
|
+
compiled_project = payload
|
213
|
+
else
|
214
|
+
return { project_name: 'Failed to resolve' }
|
215
|
+
end
|
218
216
|
|
219
|
-
|
220
|
-
|
221
|
-
|
217
|
+
errors = publish_jobs(compiled_project[:value][:jobs]) if compiled_project[:value][:jobs]
|
218
|
+
return errors unless compiled_project[:value][:views]
|
219
|
+
create_views compiled_project[:value][:views]
|
220
|
+
errors
|
221
|
+
end
|
222
|
+
|
223
|
+
def publish_project(project_name)
|
224
|
+
return {} if project_name.nil?
|
225
|
+
errors = {}
|
226
|
+
found = false
|
227
|
+
job_collection.projects.each do |project|
|
228
|
+
next unless project[:name] == project_name
|
229
|
+
found = true
|
230
|
+
errors = create_jobs_and_views(project)
|
222
231
|
end
|
232
|
+
fail "Project #{project_name} not found!" unless found
|
223
233
|
errors
|
224
234
|
end
|
225
235
|
|
@@ -205,7 +205,8 @@ describe 'job_attributes' do
|
|
205
205
|
remote_name: :foo,
|
206
206
|
refspec: :refspec,
|
207
207
|
remote_url: :remote_url,
|
208
|
-
credentials_id: :creds
|
208
|
+
credentials_id: :creds,
|
209
|
+
skip_tag: true
|
209
210
|
},
|
210
211
|
scm_url: 'http://foo.com'
|
211
212
|
}
|
@@ -238,6 +239,7 @@ describe 'job_attributes' do
|
|
238
239
|
expect(scm_config.css('includedRegions').first.content).to eq 'included_region'
|
239
240
|
expect(scm_config.css('excludedRegions').first.content).to eq 'excluded_region'
|
240
241
|
expect(scm_config.css('credentialsId').first.content).to eq 'creds'
|
242
|
+
expect(scm_config.css('skipTag').first.content).to eq 'true'
|
241
243
|
end
|
242
244
|
end
|
243
245
|
|
@@ -69,6 +69,26 @@ describe 'publishers' do
|
|
69
69
|
root_pom = sonar_nodes.select { |node| node.name == 'rootPom' }
|
70
70
|
expect(root_pom.first.content).to match 'project_war/pom.xml'
|
71
71
|
end
|
72
|
+
|
73
|
+
it 'populates the jdk by with default' do
|
74
|
+
params = { publishers: { sonar_result: {} } }
|
75
|
+
|
76
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
77
|
+
|
78
|
+
sonar_nodes = @n_xml.root.children.first.children
|
79
|
+
root_pom = sonar_nodes.select { |node| node.name == 'jdk' }
|
80
|
+
expect(root_pom.first.content).to match '(Inherit From Job)'
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'populates the jdk by' do
|
84
|
+
params = { publishers: { sonar_result: { jdk: 'java8' } } }
|
85
|
+
|
86
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
87
|
+
|
88
|
+
sonar_nodes = @n_xml.root.children.first.children
|
89
|
+
root_pom = sonar_nodes.select { |node| node.name == 'jdk' }
|
90
|
+
expect(root_pom.first.content).to match 'java8'
|
91
|
+
end
|
72
92
|
end
|
73
93
|
|
74
94
|
context 'description_setter' do
|
@@ -68,6 +68,10 @@ describe JenkinsPipelineBuilder::Generator do
|
|
68
68
|
File.expand_path("../fixtures/generator_tests/#{fixture}", __FILE__)
|
69
69
|
end
|
70
70
|
|
71
|
+
it 'raises an error when a specified project does not exist' do
|
72
|
+
expect { bootstrap(fixture_path('sample_pipeline'), 'Nopers') }.to raise_error
|
73
|
+
end
|
74
|
+
|
71
75
|
it 'produces no errors while creating pipeline SamplePipeline with view' do
|
72
76
|
errors = bootstrap(fixture_path('sample_pipeline'), 'SamplePipeline')
|
73
77
|
expect(errors).to be_empty
|
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.
|
4
|
+
version: 0.12.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: 2015-
|
12
|
+
date: 2015-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|