jenkins_pipeline_builder 0.10.16 → 0.11.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 +4 -4
- data/lib/jenkins_pipeline_builder.rb +5 -0
- data/lib/jenkins_pipeline_builder/compiler.rb +27 -24
- data/lib/jenkins_pipeline_builder/extension_dsl.rb +1 -0
- data/lib/jenkins_pipeline_builder/extension_set.rb +8 -8
- data/lib/jenkins_pipeline_builder/extensions.rb +12 -24
- data/lib/jenkins_pipeline_builder/extensions/builders.rb +36 -27
- data/lib/jenkins_pipeline_builder/extensions/helpers/builders/blocking_downstream_helper.rb +18 -0
- data/lib/jenkins_pipeline_builder/extensions/helpers/builders/maven3_helper.rb +11 -0
- data/lib/jenkins_pipeline_builder/extensions/helpers/extension_helper.rb +26 -0
- data/lib/jenkins_pipeline_builder/extensions/helpers/job_attributes/parameters_helper.rb +18 -0
- data/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb +40 -0
- data/lib/jenkins_pipeline_builder/extensions/helpers/publishers/email_ext_helper.rb +148 -0
- data/lib/jenkins_pipeline_builder/extensions/helpers/triggers/upstream_helper.rb +21 -0
- data/lib/jenkins_pipeline_builder/extensions/job_attributes.rb +1 -15
- data/lib/jenkins_pipeline_builder/extensions/publishers.rb +263 -6
- data/lib/jenkins_pipeline_builder/extensions/triggers.rb +3 -17
- data/lib/jenkins_pipeline_builder/extensions/wrappers.rb +3 -3
- data/lib/jenkins_pipeline_builder/generator.rb +10 -11
- data/lib/jenkins_pipeline_builder/job.rb +29 -25
- data/lib/jenkins_pipeline_builder/job_collection.rb +31 -21
- data/lib/jenkins_pipeline_builder/module_registry.rb +5 -1
- data/lib/jenkins_pipeline_builder/project.rb +28 -0
- data/lib/jenkins_pipeline_builder/pull_request_generator.rb +8 -8
- data/lib/jenkins_pipeline_builder/version.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb +43 -0
- data/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb +110 -0
- data/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb +56 -0
- data/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb +85 -0
- data/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb +81 -9
- data/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb +134 -0
- data/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb +88 -0
- data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +0 -97
- data/spec/lib/jenkins_pipeline_builder/fixtures/job_collection/extensions/extension.rb +11 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/job_collection/extensions/helpers/my_test_thing_helper.rb +5 -0
- data/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb +46 -0
- data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +1 -110
- data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +12 -0
- metadata +24 -2
@@ -0,0 +1,148 @@
|
|
1
|
+
class EmailExtHelper < ExtensionHelper
|
2
|
+
# rubocop:disable Metrics/MethodLength
|
3
|
+
def trigger_defaults
|
4
|
+
{
|
5
|
+
first_failure: {
|
6
|
+
name: 'FirstFailureTrigger',
|
7
|
+
send_to_recipient_list: true,
|
8
|
+
send_to_developers: true,
|
9
|
+
send_to_requester: false,
|
10
|
+
include_culprits: false
|
11
|
+
},
|
12
|
+
first_unstable: {
|
13
|
+
name: 'FirstUnstableTrigger',
|
14
|
+
send_to_recipient_list: false,
|
15
|
+
send_to_developers: true,
|
16
|
+
send_to_requester: false,
|
17
|
+
include_culprits: false
|
18
|
+
},
|
19
|
+
second_failure: {
|
20
|
+
name: 'SecondFailureTrigger',
|
21
|
+
send_to_recipient_list: true,
|
22
|
+
send_to_developers: true,
|
23
|
+
send_to_requester: false,
|
24
|
+
include_culprits: false
|
25
|
+
},
|
26
|
+
aborted: {
|
27
|
+
name: 'AbortedTrigger',
|
28
|
+
send_to_recipient_list: true,
|
29
|
+
send_to_developers: true,
|
30
|
+
send_to_requester: false,
|
31
|
+
include_culprits: false
|
32
|
+
},
|
33
|
+
always: {
|
34
|
+
name: 'AlwaysTrigger',
|
35
|
+
send_to_recipient_list: true,
|
36
|
+
send_to_developers: true,
|
37
|
+
send_to_requester: false,
|
38
|
+
include_culprits: false
|
39
|
+
},
|
40
|
+
before_build: {
|
41
|
+
name: 'PreBuildTrigger',
|
42
|
+
send_to_recipient_list: true,
|
43
|
+
send_to_developers: false,
|
44
|
+
send_to_requester: false,
|
45
|
+
include_culprits: false
|
46
|
+
},
|
47
|
+
building: {
|
48
|
+
name: 'BuildingTrigger',
|
49
|
+
send_to_recipient_list: true,
|
50
|
+
send_to_developers: true,
|
51
|
+
send_to_requester: false,
|
52
|
+
include_culprits: false
|
53
|
+
},
|
54
|
+
failure: {
|
55
|
+
name: 'FailureTrigger',
|
56
|
+
send_to_recipient_list: false,
|
57
|
+
send_to_developers: true,
|
58
|
+
send_to_requester: false,
|
59
|
+
include_culprits: false
|
60
|
+
},
|
61
|
+
fixed: {
|
62
|
+
name: 'FixedTrigger',
|
63
|
+
send_to_recipient_list: true,
|
64
|
+
send_to_developers: true,
|
65
|
+
send_to_requester: false,
|
66
|
+
include_culprits: false
|
67
|
+
},
|
68
|
+
fixed_unhealthy: {
|
69
|
+
name: 'FixedUnhealthyTrigger',
|
70
|
+
send_to_recipient_list: true,
|
71
|
+
send_to_developers: true,
|
72
|
+
send_to_requester: false,
|
73
|
+
include_culprits: false
|
74
|
+
},
|
75
|
+
improvement: {
|
76
|
+
name: 'ImprovementTrigger',
|
77
|
+
send_to_recipient_list: true,
|
78
|
+
send_to_developers: true,
|
79
|
+
send_to_requester: false,
|
80
|
+
include_culprits: false
|
81
|
+
},
|
82
|
+
not_built: {
|
83
|
+
name: 'NotBuiltTrigger',
|
84
|
+
send_to_recipient_list: true,
|
85
|
+
send_to_developers: true,
|
86
|
+
send_to_requester: false,
|
87
|
+
include_culprits: false
|
88
|
+
},
|
89
|
+
prebuild_script: {
|
90
|
+
name: 'PreBuildScriptTrigger',
|
91
|
+
send_to_recipient_list: false,
|
92
|
+
send_to_developers: false,
|
93
|
+
send_to_requester: false,
|
94
|
+
include_culprits: false
|
95
|
+
},
|
96
|
+
regression: {
|
97
|
+
name: 'RegressionTrigger',
|
98
|
+
send_to_recipient_list: true,
|
99
|
+
send_to_developers: true,
|
100
|
+
send_to_requester: false,
|
101
|
+
include_culprits: false
|
102
|
+
},
|
103
|
+
script: {
|
104
|
+
name: 'ScriptTrigger',
|
105
|
+
send_to_recipient_list: true,
|
106
|
+
send_to_developers: false,
|
107
|
+
send_to_requester: false,
|
108
|
+
include_culprits: false
|
109
|
+
},
|
110
|
+
status_changed: {
|
111
|
+
name: 'StatusChangedTrigger',
|
112
|
+
send_to_recipient_list: false,
|
113
|
+
send_to_developers: true,
|
114
|
+
send_to_requester: false,
|
115
|
+
include_culprits: false
|
116
|
+
},
|
117
|
+
still_failing: {
|
118
|
+
name: 'StillFailingTrigger',
|
119
|
+
send_to_recipient_list: false,
|
120
|
+
send_to_developers: true,
|
121
|
+
send_to_requester: false,
|
122
|
+
include_culprits: false
|
123
|
+
},
|
124
|
+
still_unstable: {
|
125
|
+
name: 'StillUnstableTrigger',
|
126
|
+
send_to_recipient_list: false,
|
127
|
+
send_to_developers: true,
|
128
|
+
send_to_requester: false,
|
129
|
+
include_culprits: false
|
130
|
+
},
|
131
|
+
success: {
|
132
|
+
name: 'SuccessTrigger',
|
133
|
+
send_to_recipient_list: false,
|
134
|
+
send_to_developers: true,
|
135
|
+
send_to_requester: false,
|
136
|
+
include_culprits: false
|
137
|
+
},
|
138
|
+
unstable: {
|
139
|
+
name: 'UnstableTrigger',
|
140
|
+
send_to_recipient_list: false,
|
141
|
+
send_to_developers: true,
|
142
|
+
send_to_requester: false,
|
143
|
+
include_culprits: false
|
144
|
+
}
|
145
|
+
}
|
146
|
+
end
|
147
|
+
# rubocop:enable Metrics/MethodLength
|
148
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class UpstreamHelper < ExtensionHelper
|
2
|
+
attr_reader :color, :name, :ordinal
|
3
|
+
def initialize(params, builder)
|
4
|
+
super params, builder
|
5
|
+
|
6
|
+
case params[:status]
|
7
|
+
when 'unstable'
|
8
|
+
@name = 'UNSTABLE'
|
9
|
+
@ordinal = '1'
|
10
|
+
@color = 'yellow'
|
11
|
+
when 'failed'
|
12
|
+
@name = 'FAILURE'
|
13
|
+
@ordinal = '2'
|
14
|
+
@color = 'RED'
|
15
|
+
else
|
16
|
+
@name = 'SUCCESS'
|
17
|
+
@ordinal = '0'
|
18
|
+
@color = 'BLUE'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -238,22 +238,8 @@ job_attribute do
|
|
238
238
|
send('hudson.model.ParametersDefinitionProperty') do
|
239
239
|
parameterDefinitions do
|
240
240
|
params.each do |param|
|
241
|
-
case param[:type]
|
242
|
-
when 'string'
|
243
|
-
paramType = 'hudson.model.StringParameterDefinition'
|
244
|
-
when 'bool'
|
245
|
-
paramType = 'hudson.model.BooleanParameterDefinition'
|
246
|
-
when 'text'
|
247
|
-
paramType = 'hudson.model.TextParameterDefinition'
|
248
|
-
when 'password'
|
249
|
-
paramType = 'hudson.model.PasswordParameterDefinition'
|
250
|
-
when 'choice'
|
251
|
-
paramType = 'hudson.model.ChoiceParameterDefinition'
|
252
|
-
else
|
253
|
-
paramType = 'hudson.model.StringParameterDefinition'
|
254
|
-
end
|
255
241
|
|
256
|
-
send(
|
242
|
+
send(params.param_type param) do
|
257
243
|
name param[:name]
|
258
244
|
description param[:description]
|
259
245
|
defaultValue param[:default]
|
@@ -80,14 +80,35 @@ publisher do
|
|
80
80
|
jenkins_name 'HipChat Notifications'
|
81
81
|
announced false
|
82
82
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
version '0' do
|
84
|
+
xml do |params|
|
85
|
+
params = {} if params == true
|
86
|
+
send('jenkins.plugins.hipchat.HipChatNotifier') do
|
87
|
+
jenkinsUrl params[:jenkinsUrl] || ''
|
88
|
+
authToken params[:authToken] || ''
|
89
|
+
room params[:room] || ''
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
version '0.1.9' do
|
95
|
+
xml do |params|
|
96
|
+
send('jenkins.plugins.hipchat.HipChatNotifier') do
|
97
|
+
token params[:token] || params[:authToken] || ''
|
98
|
+
room params[:room] || ''
|
99
|
+
startNotification params[:start_notify] || false
|
100
|
+
notifySuccess params[:success_notify] || false
|
101
|
+
notifyAborted params[:aborted_notify] || false
|
102
|
+
notifyNotBuilt params[:notbuilt_notify] || false
|
103
|
+
notifyUnstable params[:unstable_notify] || false
|
104
|
+
notifyFailure params[:failure_notify] || false
|
105
|
+
notifyBackToNormal params[:normal_notify] || false
|
106
|
+
startJobMessage params[:start_message] || ''
|
107
|
+
completeJobMessage params[:complete_message] || ''
|
108
|
+
end
|
89
109
|
end
|
90
110
|
end
|
111
|
+
|
91
112
|
end
|
92
113
|
|
93
114
|
publisher do
|
@@ -298,3 +319,239 @@ publisher do
|
|
298
319
|
end
|
299
320
|
end
|
300
321
|
end
|
322
|
+
|
323
|
+
publisher do
|
324
|
+
name :brakeman
|
325
|
+
plugin_id 'brakeman'
|
326
|
+
description 'Parses results from Brakeman, a static-analysis vulnerability scanner for Ruby on Rails.'
|
327
|
+
jenkins_name 'Brakeman Plugin'
|
328
|
+
announced false
|
329
|
+
|
330
|
+
xml do |params|
|
331
|
+
|
332
|
+
send('hudson.plugins.brakeman.BrakemanPublisher', 'plugin' => 'brakeman') do
|
333
|
+
healthy params[:healthy] || ''
|
334
|
+
unHealthy params[:unhealthy] || ''
|
335
|
+
thresholdLimit params[:threshold_limit] || 'low'
|
336
|
+
pluginName '[BRAKEMAN] '
|
337
|
+
defaultEncoding 'UTF-8'
|
338
|
+
canRunOnFailed params[:can_run_on_failed] || false
|
339
|
+
useStableBuildAsReference params[:use_stable_build_as_reference] || false
|
340
|
+
useDeltaValues params[:use_delta_values] || false
|
341
|
+
|
342
|
+
thresholds = params[:thresholds] || {}
|
343
|
+
send('thresholds', 'plugin' => 'analysis-core') do
|
344
|
+
unstableTotalAll { text(thresholds[:unstable_total_all] || '') }
|
345
|
+
unstableTotalHigh { text(thresholds[:unstable_total_high] || '') }
|
346
|
+
unstableTotalNormal { text(thresholds[:unstable_total_normal] || '') }
|
347
|
+
unstableTotalLow { text(thresholds[:unstable_total_low] || '') }
|
348
|
+
failedTotalAll { text(thresholds[:failed_total_all] || '') }
|
349
|
+
failedTotalHigh { text(thresholds[:failed_total_high] || '') }
|
350
|
+
failedTotalNormal { text(thresholds[:failed_total_normal] || '') }
|
351
|
+
failedTotalLow { text(thresholds[:failed_total_low] || '') }
|
352
|
+
end
|
353
|
+
|
354
|
+
shouldDetectModules { text(params[:should_detect_modules] || false) }
|
355
|
+
dontComputeNew { text(params[:dont_compute_new] || true) }
|
356
|
+
doNotResolveRelativePaths { text(params[:do_not_resolve_relative_paths] || false) }
|
357
|
+
outputFile { text(params[:output_file] || 'brakeman-output.tabs') }
|
358
|
+
end
|
359
|
+
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
publisher do
|
364
|
+
name :claim_broken_build
|
365
|
+
plugin_id 'claim'
|
366
|
+
description 'This plugin allows users to claim failed builds.'
|
367
|
+
jenkins_name 'Jenkins Claim Plugin'
|
368
|
+
announced false
|
369
|
+
|
370
|
+
xml do |allow_claim|
|
371
|
+
send('hudson.plugins.claim.ClaimPublisher', 'plugin' => 'claim') if allow_claim
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
publisher do
|
376
|
+
name :cobertura_report
|
377
|
+
plugin_id 'cobertura'
|
378
|
+
description 'This plugin integrates Cobertura coverage reports to Jenkins.'
|
379
|
+
jenkins_name 'Cobertura Plugin'
|
380
|
+
announced false
|
381
|
+
|
382
|
+
xml do |params|
|
383
|
+
send('hudson.plugins.cobertura.CoberturaPublisher', 'plugin' => 'cobertura') do
|
384
|
+
|
385
|
+
coberturaReportFile params[:cobertura_report_file]
|
386
|
+
onlyStable params[:only_stable] || false
|
387
|
+
failUnhealthy params[:fail_unhealthy] || false
|
388
|
+
failUnstable params[:fail_unstable] || false
|
389
|
+
autoUpdateHealth params[:auto_update_health] || false
|
390
|
+
autoUpdateStability params[:auto_update_stability] || false
|
391
|
+
zoomCoverageChart params[:zoom_coverage_chart] || false
|
392
|
+
maxNumberOfBuilds params[:max_number_of_builds] || 0
|
393
|
+
failNoReports params[:fail_no_reports] || true
|
394
|
+
|
395
|
+
params.send_metric_targets(:failing)
|
396
|
+
params.send_metric_targets(:unhealthy)
|
397
|
+
params.send_metric_targets(:healthy)
|
398
|
+
|
399
|
+
sourceEncoding params[:source_encoding] || 'ASCII'
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
403
|
+
end
|
404
|
+
|
405
|
+
publisher do
|
406
|
+
name :email_ext
|
407
|
+
plugin_id 'email-ext'
|
408
|
+
description 'This plugin is a replacement for Jenkins\'s email publisher.'
|
409
|
+
jenkins_name 'Email-ext plugin'
|
410
|
+
announced false
|
411
|
+
|
412
|
+
xml do |params|
|
413
|
+
send('hudson.plugins.emailext.ExtendedEmailPublisher', 'plugin' => 'email-ext') do
|
414
|
+
recipientList { text(params[:recipient_list] || '$DEFAULT_RECIPIENTS') }
|
415
|
+
|
416
|
+
unless params[:triggers].nil?
|
417
|
+
|
418
|
+
configuredTriggers do
|
419
|
+
params[:triggers].each do |trigger_params|
|
420
|
+
|
421
|
+
trigger_type = trigger_params[:type].to_sym
|
422
|
+
defaults = params.trigger_defaults[trigger_type]
|
423
|
+
|
424
|
+
send("hudson.plugins.emailext.plugins.trigger.#{defaults[:name]}") do
|
425
|
+
email do
|
426
|
+
recipientList { text(trigger_params[:recipient_list] || '') }
|
427
|
+
subject { text(trigger_params[:subject] || '$PROJECT_DEFAULT_SUBJECT') }
|
428
|
+
body { text(trigger_params[:body] || '$PROJECT_DEFAULT_CONTENT') }
|
429
|
+
sendToDevelopers { text(!trigger_params[:send_to_developers].nil? ? trigger_params[:send_to_developers] : defaults[:send_to_developers]) }
|
430
|
+
sendToRequester { text(!trigger_params[:send_to_requester].nil? ? trigger_params[:send_to_requester] : defaults[:send_to_requester]) }
|
431
|
+
includeCulprits { text(!trigger_params[:include_culprits].nil? ? trigger_params[:include_culprits] : defaults[:include_culprits]) }
|
432
|
+
sendToRecipientList { text(!trigger_params[:send_to_recipient_list].nil? ? trigger_params[:send_to_recipient_list] : defaults[:send_to_recipient_list]) }
|
433
|
+
attachmentsPattern { text(trigger_params[:attachments_pattern] || '') }
|
434
|
+
attachBuildLog { text(trigger_params[:attach_build_log] || false) }
|
435
|
+
compressBuildLog { text(trigger_params[:compress_build_log] || false) }
|
436
|
+
replyTo { text(trigger_params[:reply_to] || '$PROJECT_DEFAULT_REPLYTO') }
|
437
|
+
contentType { text(trigger_params[:content_type] || 'project') }
|
438
|
+
end
|
439
|
+
|
440
|
+
failureCount { text '1' } if trigger_type == :first_failure
|
441
|
+
failureCount { text '2' } if trigger_type == :second_failure
|
442
|
+
if trigger_type == :prebuild_script || trigger_type == :script
|
443
|
+
triggerScript { text(trigger_params[:trigger_script] || '') }
|
444
|
+
end
|
445
|
+
end
|
446
|
+
end
|
447
|
+
end
|
448
|
+
end
|
449
|
+
|
450
|
+
contentType { text(params[:content_type] || 'default') }
|
451
|
+
defaultSubject { text(params[:default_subject] || '$DEFAULT_SUBJECT') }
|
452
|
+
defaultContent { text(params[:default_content] || '$DEFAULT_CONTENT') }
|
453
|
+
attachmentsPattern { text(params[:attachments_pattern] || '') }
|
454
|
+
presendScript { text(params[:presend_script] || '$DEFAULT_PRESEND_SCRIPT') }
|
455
|
+
attachBuildLog { text(params[:attach_build_log] || 'false') }
|
456
|
+
compressBuildLog { text(params[:compress_build_log] || 'false') }
|
457
|
+
replyTo { text(params[:reply_to] || '$DEFAULT_REPLYTO') }
|
458
|
+
saveOutput { text(params[:save_output] || 'false') }
|
459
|
+
end
|
460
|
+
end
|
461
|
+
end
|
462
|
+
|
463
|
+
publisher do
|
464
|
+
name :html_publisher
|
465
|
+
plugin_id 'htmlpublisher'
|
466
|
+
description 'This plugin publishes HTML reports.'
|
467
|
+
jenkins_name 'HTML Publisher Plugin'
|
468
|
+
announced false
|
469
|
+
|
470
|
+
xml do |params|
|
471
|
+
send('htmlpublisher.HtmlPublisher', 'plugin' => 'htmlpublisher') do
|
472
|
+
send('reportTargets') do
|
473
|
+
unless params[:report_targets].nil?
|
474
|
+
params[:report_targets].each do |target|
|
475
|
+
send('htmlpublisher.HtmlPublisherTarget') do
|
476
|
+
reportName target[:report_title] || 'HTML Report'
|
477
|
+
reportDir target[:report_dir] || ''
|
478
|
+
reportFiles target[:index_pages] || 'index.html'
|
479
|
+
keepAll target[:keep_past] || false
|
480
|
+
allowMissing target[:allow_missing] || false
|
481
|
+
wrapperName 'htmlpublisher-wrapper.html'
|
482
|
+
end
|
483
|
+
end
|
484
|
+
end
|
485
|
+
end
|
486
|
+
end
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
publisher do
|
491
|
+
name :publish_tap_results
|
492
|
+
plugin_id 'tap'
|
493
|
+
description 'This plug-in adds support to TAP test result files to Jenkins. It lets you specify an ant-like pattern for a directory that contains your TAP files.'
|
494
|
+
jenkins_name 'TAP Plugin'
|
495
|
+
announced false
|
496
|
+
|
497
|
+
xml do |params|
|
498
|
+
send('org.tap4j.plugin.TapPublisher', 'plugin' => 'tap') do
|
499
|
+
testResults params[:test_results]
|
500
|
+
failIfNoResults params[:fail_if_no_results] || false
|
501
|
+
failedTestsMarkBuildAsFailure params[:failed_test_mark_as_failure] || false
|
502
|
+
outputTapToConsole params[:output_to_console] || false
|
503
|
+
enableSubtests params[:enable_subtests] || false
|
504
|
+
discardOldReports params[:discard_old_reports] || false
|
505
|
+
todoIsFailure params[:todo_is_failure] || false
|
506
|
+
includeCommentDiagnostics params[:include_comment_diagnostics] || false
|
507
|
+
validateNumberOfTests params[:validate_number_tests] || false
|
508
|
+
end
|
509
|
+
end
|
510
|
+
|
511
|
+
end
|
512
|
+
|
513
|
+
publisher do
|
514
|
+
name :xunit
|
515
|
+
plugin_id 'xunit'
|
516
|
+
description 'This plugin makes it possible to record xUnit test reports.'
|
517
|
+
jenkins_name 'xUnit Plugin'
|
518
|
+
announced false
|
519
|
+
|
520
|
+
xml do |params|
|
521
|
+
send('xunit', 'plugin' => 'xunit') do
|
522
|
+
send('types') do
|
523
|
+
unless params[:types].nil?
|
524
|
+
params[:types].each do |type|
|
525
|
+
send(type[:type]) do
|
526
|
+
pattern type[:pattern]
|
527
|
+
skipNoTestFiles type[:skip_no_test_files] || false
|
528
|
+
failIfNotNew type[:fail_if_not_new] || true
|
529
|
+
deleteOutputFiles type[:delete_output_files] || true
|
530
|
+
stopProcessingIfError type[:stop_processing_error] || true
|
531
|
+
end
|
532
|
+
end
|
533
|
+
end
|
534
|
+
end
|
535
|
+
|
536
|
+
params[:thresholds] ||= {}
|
537
|
+
failed_thresholds = params[:thresholds][:failed] || {}
|
538
|
+
skipped_thresholds = params[:thresholds][:skipped] || {}
|
539
|
+
thresholds do
|
540
|
+
send('org.jenkinsci.plugins.xunit.threshold.FailedThreshold') do
|
541
|
+
unstableThreshold failed_thresholds[:unstable_threshold] || ''
|
542
|
+
unstableNewThreshold failed_thresholds[:unstable_new_threshold] || ''
|
543
|
+
failureThreshold failed_thresholds[:failure_threshold] || ''
|
544
|
+
failureNewThreshold failed_thresholds[:failure_new_threshold] || ''
|
545
|
+
end
|
546
|
+
send('org.jenkinsci.plugins.xunit.threshold.SkippedThreshold') do
|
547
|
+
unstableThreshold skipped_thresholds[:unstable_threshold] || ''
|
548
|
+
unstableNewThreshold skipped_thresholds[:unstable_new_threshold] || ''
|
549
|
+
failureThreshold skipped_thresholds[:failure_threshold] || ''
|
550
|
+
failureNewThreshold skipped_thresholds[:failure_new_threshold] || ''
|
551
|
+
end
|
552
|
+
end
|
553
|
+
|
554
|
+
thresholdMode params[:threshold_mode] || 1
|
555
|
+
end
|
556
|
+
end
|
557
|
+
end
|