rubyjobbuilderdsl 0.0.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 +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +33 -0
- data/LICENSE +19 -0
- data/Rakefile +12 -0
- data/docs/common.md +313 -0
- data/docs/flow.md +18 -0
- data/docs/freestyle.md +100 -0
- data/docs/gerrit.md +70 -0
- data/docs/git.md +88 -0
- data/docs/index.md +11 -0
- data/docs/multi.md +27 -0
- data/docs/overview.md +74 -0
- data/docs/postbuild.md +266 -0
- data/docs/view.md +13 -0
- data/lib/rubyjobbuilderdsl/builder.rb +69 -0
- data/lib/rubyjobbuilderdsl/buildstep/ant.rb +29 -0
- data/lib/rubyjobbuilderdsl/buildstep/copyartifact.rb +23 -0
- data/lib/rubyjobbuilderdsl/buildstep/inject_env.rb +18 -0
- data/lib/rubyjobbuilderdsl/buildstep/phase.rb +19 -0
- data/lib/rubyjobbuilderdsl/buildstep/phase_job.rb +26 -0
- data/lib/rubyjobbuilderdsl/buildstep/shell.rb +24 -0
- data/lib/rubyjobbuilderdsl/common/artifactory.rb +33 -0
- data/lib/rubyjobbuilderdsl/common/blocking_job.rb +11 -0
- data/lib/rubyjobbuilderdsl/common/build_timeout.rb +23 -0
- data/lib/rubyjobbuilderdsl/common/gerrit.rb +53 -0
- data/lib/rubyjobbuilderdsl/common/git.rb +76 -0
- data/lib/rubyjobbuilderdsl/common/logrotate.rb +24 -0
- data/lib/rubyjobbuilderdsl/common/parameter.rb +22 -0
- data/lib/rubyjobbuilderdsl/common/password.rb +12 -0
- data/lib/rubyjobbuilderdsl/common/pollscm.rb +10 -0
- data/lib/rubyjobbuilderdsl/common/scms.rb +18 -0
- data/lib/rubyjobbuilderdsl/common/throttle.rb +24 -0
- data/lib/rubyjobbuilderdsl/common/timed.rb +10 -0
- data/lib/rubyjobbuilderdsl/common/timestamps.rb +6 -0
- data/lib/rubyjobbuilderdsl/common.rb +140 -0
- data/lib/rubyjobbuilderdsl/deployer.rb +95 -0
- data/lib/rubyjobbuilderdsl/flow.rb +14 -0
- data/lib/rubyjobbuilderdsl/freestyle.rb +57 -0
- data/lib/rubyjobbuilderdsl/jenkins_client.rb +203 -0
- data/lib/rubyjobbuilderdsl/multijob.rb +24 -0
- data/lib/rubyjobbuilderdsl/postbuild/archive.rb +23 -0
- data/lib/rubyjobbuilderdsl/postbuild/chucknorris_publisher.rb +6 -0
- data/lib/rubyjobbuilderdsl/postbuild/claim_publisher.rb +6 -0
- data/lib/rubyjobbuilderdsl/postbuild/cloverphp_publisher.rb +36 -0
- data/lib/rubyjobbuilderdsl/postbuild/email_publisher.rb +23 -0
- data/lib/rubyjobbuilderdsl/postbuild/game_publisher.rb +6 -0
- data/lib/rubyjobbuilderdsl/postbuild/groovy.rb +10 -0
- data/lib/rubyjobbuilderdsl/postbuild/html_publisher.rb +27 -0
- data/lib/rubyjobbuilderdsl/postbuild/javadoc_publisher.rb +19 -0
- data/lib/rubyjobbuilderdsl/postbuild/logparser.rb +21 -0
- data/lib/rubyjobbuilderdsl/postbuild/nunit_publisher.rb +21 -0
- data/lib/rubyjobbuilderdsl/postbuild/pmd_publisher.rb +19 -0
- data/lib/rubyjobbuilderdsl/postbuild/script.rb +14 -0
- data/lib/rubyjobbuilderdsl/postbuild/tap_publisher.rb +44 -0
- data/lib/rubyjobbuilderdsl/postbuild/trigger.rb +38 -0
- data/lib/rubyjobbuilderdsl/postbuild/xunit_publisher.rb +35 -0
- data/lib/rubyjobbuilderdsl/postbuild.rb +146 -0
- data/lib/rubyjobbuilderdsl/view.rb +14 -0
- data/lib/rubyjobbuilderdsl/xml_generator.rb +839 -0
- data/lib/rubyjobbuilderdsl.rb +2 -0
- data/rubyjobbuilderdsl.gemspec +13 -0
- data/rubyjobbuilderdsl.sublime-project +14 -0
- data/run_tests.sh +7 -0
- data/sample/hello_mars.rb +27 -0
- data/sample/local.ini +4 -0
- data/test/test_ant.rb +38 -0
- data/test/test_archive.rb +24 -0
- data/test/test_artifactory.rb +26 -0
- data/test/test_blocking_job.rb +18 -0
- data/test/test_chucknorris_publisher.rb +17 -0
- data/test/test_claim_publisher.rb +17 -0
- data/test/test_cloverphp.rb +33 -0
- data/test/test_concurrent.rb +44 -0
- data/test/test_copyartifact.rb +45 -0
- data/test/test_default_setting.rb +29 -0
- data/test/test_email_publisher.rb +44 -0
- data/test/test_flow.rb +19 -0
- data/test/test_freestyle.rb +52 -0
- data/test/test_game_publisher.rb +17 -0
- data/test/test_gerrit.rb +117 -0
- data/test/test_git.rb +80 -0
- data/test/test_html_publisher.rb +57 -0
- data/test/test_inject.rb +23 -0
- data/test/test_javadoc.rb +22 -0
- data/test/test_logparser.rb +24 -0
- data/test/test_logrotate.rb +22 -0
- data/test/test_multijob.rb +50 -0
- data/test/test_nunit_publisher.rb +20 -0
- data/test/test_parameter.rb +44 -0
- data/test/test_password.rb +17 -0
- data/test/test_pmd.rb +22 -0
- data/test/test_pollscm.rb +15 -0
- data/test/test_postbuild_groovy.rb +21 -0
- data/test/test_postbuild_script.rb +24 -0
- data/test/test_postbuild_trigger.rb +170 -0
- data/test/test_scms.rb +31 -0
- data/test/test_tap_publisher.rb +25 -0
- data/test/test_timed.rb +15 -0
- data/test/test_timeout.rb +20 -0
- data/test/test_timestamps.rb +14 -0
- data/test/test_xml_generator.rb +28 -0
- data/test/test_xunit_publisher.rb +22 -0
- metadata +173 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'net/https'
|
|
3
|
+
require 'uri'
|
|
4
|
+
require 'base64'
|
|
5
|
+
require 'nokogiri'
|
|
6
|
+
|
|
7
|
+
module JenkinsJob
|
|
8
|
+
class JenkinsClient
|
|
9
|
+
attr_reader :server_url, :username, :password
|
|
10
|
+
|
|
11
|
+
def initialize(server_url, username, password)
|
|
12
|
+
@server_url = server_url
|
|
13
|
+
@username = username
|
|
14
|
+
@password = password
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def upload_job(name, xml)
|
|
18
|
+
if job_exists?(name)
|
|
19
|
+
$stderr.puts "updating job #{name}"
|
|
20
|
+
request_uri = "/job/#{name}/config.xml"
|
|
21
|
+
else
|
|
22
|
+
$stderr.puts "creating job #{name}"
|
|
23
|
+
request_uri = "/createItem?name=#{name}"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
request = Net::HTTP::Post.new(request_uri)
|
|
27
|
+
request.content_type = 'application/xml;charset=UTF-8'
|
|
28
|
+
request.body = xml
|
|
29
|
+
|
|
30
|
+
response = send_request(request)
|
|
31
|
+
|
|
32
|
+
$stderr.puts response.body if response.code == '200'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def upload_view(name, xml)
|
|
36
|
+
if view_exists?(name)
|
|
37
|
+
$stderr.puts "updating view #{name}"
|
|
38
|
+
request_uri = "/view/#{name}/config.xml"
|
|
39
|
+
else
|
|
40
|
+
$stderr.puts "creating view #{name}"
|
|
41
|
+
request_uri = "/createView?name=#{name}"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
request = Net::HTTP::Post.new(request_uri)
|
|
45
|
+
request.content_type = 'application/xml;charset=UTF-8'
|
|
46
|
+
request.body = xml
|
|
47
|
+
|
|
48
|
+
response = send_request(request)
|
|
49
|
+
|
|
50
|
+
$stderr.puts response.body if response.code == '200'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def upload_file(remote_name, content)
|
|
54
|
+
base64_content = Base64.strict_encode64(content)
|
|
55
|
+
|
|
56
|
+
groovy_script = <<-EOS
|
|
57
|
+
import org.apache.commons.codec.binary.Base64
|
|
58
|
+
Base64 coder = new Base64()
|
|
59
|
+
env = System.getenv()
|
|
60
|
+
new File(env['JENKINS_HOME'] + '/#{remote_name}').withWriter {
|
|
61
|
+
out -> out.write(new String(coder.decode('#{base64_content}')))
|
|
62
|
+
}
|
|
63
|
+
EOS
|
|
64
|
+
|
|
65
|
+
groovysh(groovy_script)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def groovysh(groovy_script)
|
|
69
|
+
$stdout.puts 'running groovy script'
|
|
70
|
+
request = Net::HTTP::Post.new('/scriptText')
|
|
71
|
+
|
|
72
|
+
request.set_form_data('script' => groovy_script)
|
|
73
|
+
|
|
74
|
+
response = send_request(request)
|
|
75
|
+
|
|
76
|
+
$stderr.puts response.body if response.code == '200'
|
|
77
|
+
|
|
78
|
+
response = send_request(request)
|
|
79
|
+
|
|
80
|
+
$stderr.puts response.body if response.code == '200'
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def delete_view(name)
|
|
84
|
+
$stdout.puts "deleting view #{name}"
|
|
85
|
+
if view_exists?(name)
|
|
86
|
+
request = Net::HTTP::Post.new("/view/#{name}/doDelete")
|
|
87
|
+
response = send_request(request)
|
|
88
|
+
$stderr.puts response.body if response.code == '200'
|
|
89
|
+
else
|
|
90
|
+
$stdout.puts "view #{name} doesn't exists"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def delete_job(name)
|
|
95
|
+
$stdout.puts "deleting job #{name}"
|
|
96
|
+
if job_exists?(name)
|
|
97
|
+
request = Net::HTTP::Post.new("/job/#{name}/doDelete")
|
|
98
|
+
response = send_request(request)
|
|
99
|
+
$stderr.puts response.body if response.code == '200'
|
|
100
|
+
else
|
|
101
|
+
$stdout.puts "job #{name} doesn't exists"
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def wipeout_workspace(name)
|
|
106
|
+
$stdout.puts "wiping out workspace of #{name}"
|
|
107
|
+
if job_exists?(name)
|
|
108
|
+
request = Net::HTTP::Post.new("/job/#{name}/doWipeOutWorkspace")
|
|
109
|
+
send_request(request)
|
|
110
|
+
else
|
|
111
|
+
$stdout.puts "job #{name} doesn't exists"
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def disable_job(name)
|
|
116
|
+
$stdout.puts "disabling job #{name}"
|
|
117
|
+
if job_exists?(name)
|
|
118
|
+
request = Net::HTTP::Post.new("/job/#{name}/disable")
|
|
119
|
+
send_request(request)
|
|
120
|
+
else
|
|
121
|
+
$stdout.puts "job #{name} doesn't exists"
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def enable_job(name)
|
|
126
|
+
$stdout.puts "enabling job #{name}"
|
|
127
|
+
if job_exists?(name)
|
|
128
|
+
request = Net::HTTP::Post.new("/job/#{name}/enable")
|
|
129
|
+
send_request(request)
|
|
130
|
+
else
|
|
131
|
+
$stdout.puts "job #{name} doesn't exists"
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def trigger_job(name)
|
|
136
|
+
$stdout.puts "buiding job #{name}"
|
|
137
|
+
if job_exists?(name)
|
|
138
|
+
request = Net::HTTP::Post.new("/job/#{name}/build")
|
|
139
|
+
send_request(request)
|
|
140
|
+
else
|
|
141
|
+
$stdout.puts "job #{name} doesn't exists"
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def jobs(filter)
|
|
146
|
+
if jenkins_xml_doc
|
|
147
|
+
jenkins_xml_doc.xpath('//job/name').map(&:text).select { |name| name =~ /#{filter}/ }
|
|
148
|
+
else
|
|
149
|
+
[]
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
private
|
|
154
|
+
|
|
155
|
+
def jenkins_xml_doc(force = true)
|
|
156
|
+
if force || @jenkins_xml_doc.nil?
|
|
157
|
+
request = Net::HTTP::Get.new('/api/xml')
|
|
158
|
+
response = send_request(request)
|
|
159
|
+
if response.code == '200'
|
|
160
|
+
@jenkins_xml_doc = Nokogiri::XML.parse(response.body)
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
@jenkins_xml_doc
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def job_exists?(name)
|
|
167
|
+
if jenkins_xml_doc
|
|
168
|
+
jenkins_xml_doc.xpath('//job/name').map(&:text).include?(name)
|
|
169
|
+
else
|
|
170
|
+
false
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def view_exists?(name)
|
|
175
|
+
if jenkins_xml_doc
|
|
176
|
+
jenkins_xml_doc.xpath('//view/name').map(&:text).include?(name)
|
|
177
|
+
else
|
|
178
|
+
false
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def send_request(request)
|
|
183
|
+
uri = URI.parse("#{server_url}")
|
|
184
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
185
|
+
|
|
186
|
+
if server_url =~ /^https:/
|
|
187
|
+
http.use_ssl = true
|
|
188
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
request.basic_auth(username, password)
|
|
192
|
+
response = http.request(request)
|
|
193
|
+
|
|
194
|
+
if response.code.to_i < 200 || response.code.to_i > 399
|
|
195
|
+
$stderr.puts "Error posting to #{request.path}"
|
|
196
|
+
$stderr.puts "Http response.code: #{response.code}"
|
|
197
|
+
$stderr.puts "Http response.body:\n#{response.body}\n"
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
response
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative './common'
|
|
2
|
+
require_relative './buildstep/phase'
|
|
3
|
+
require_relative './buildstep/phase_job'
|
|
4
|
+
|
|
5
|
+
module JenkinsJob
|
|
6
|
+
class MultiJob < Common::Common
|
|
7
|
+
include BuildStep
|
|
8
|
+
|
|
9
|
+
attr_reader :name, :builders_
|
|
10
|
+
|
|
11
|
+
def initialize(name, builder)
|
|
12
|
+
super(builder)
|
|
13
|
+
@name = name
|
|
14
|
+
@builders_ = []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def phase(name, &block)
|
|
18
|
+
phase = Phase.new(name)
|
|
19
|
+
phase.instance_eval(&block) if block
|
|
20
|
+
|
|
21
|
+
@builders_ << phase
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class Archive < BasicObject
|
|
4
|
+
attr_reader :artifacts_, :exclude_, :allow_empty_, :latest_only_
|
|
5
|
+
|
|
6
|
+
def file(*value)
|
|
7
|
+
@artifacts_ = value.join(',')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def exclude(*value)
|
|
11
|
+
@exclude_ = value.join(',')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def allow_empty(value = true)
|
|
15
|
+
@allow_empty_ = value
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def latest_only(value = true)
|
|
19
|
+
@latest_only_ = value
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class CloverPhpPublisher < BasicObject
|
|
4
|
+
attr_reader :xml_location_, :html_report_dir_, :archive_,
|
|
5
|
+
:healthy_target_, :unhealthy_target_, :failing_target_
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
@archive_ = true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def xml_location(value)
|
|
12
|
+
@xml_location_ = value
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def html_report_dir(value)
|
|
16
|
+
@html_report_dir_ = value
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def archive(value = true)
|
|
20
|
+
@archive_ = value
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def healthy_target(value)
|
|
24
|
+
@healthy_target_ = value
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def unhealthy_target(value)
|
|
28
|
+
@unhealthy_target_ = value
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def failing_target(value)
|
|
32
|
+
@failing_target_ = value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# dsl methods for job builder
|
|
2
|
+
module JenkinsJob
|
|
3
|
+
module Postbuild
|
|
4
|
+
class EmailPublisher < BasicObject
|
|
5
|
+
attr_reader :recipients_, :notify_every_unstable_build_, :send_to_individuals_
|
|
6
|
+
|
|
7
|
+
def initialize(recipients)
|
|
8
|
+
@recipients_ = recipients
|
|
9
|
+
|
|
10
|
+
@notify_every_unstable_build_ = true
|
|
11
|
+
@send_to_individuals_ = false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def notify_every_unstable_build(value)
|
|
15
|
+
@notify_every_unstable_build_ = value
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def send_to_individuals(value = true)
|
|
19
|
+
@send_to_individuals_ = value
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class HtmlPublisher < BasicObject
|
|
4
|
+
attr_reader :name, :keep_all_, :allow_missing_, :dir_, :file_
|
|
5
|
+
|
|
6
|
+
def initialize(name)
|
|
7
|
+
@name = name
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def dir(value)
|
|
11
|
+
@dir_ = value
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def file(value)
|
|
15
|
+
@file_ = value
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def keep_all(value = true)
|
|
19
|
+
@keep_all_ = value
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def allow_missing(value = true)
|
|
23
|
+
@allow_missing_ = value
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class JavaDocPublisher < BasicObject
|
|
4
|
+
attr_reader :doc_dir_, :keep_all_
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@keep_all_ = false
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def doc_dir(value)
|
|
11
|
+
@doc_dir_ = value
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def keep_all(value = true)
|
|
15
|
+
@keep_all_ = value
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class LogParser < BasicObject
|
|
4
|
+
attr_reader :rule_file_, :unstable_on_warning_, :fail_on_error_
|
|
5
|
+
|
|
6
|
+
def initialize(rule_file)
|
|
7
|
+
@rule_file_ = rule_file
|
|
8
|
+
@unstable_on_warning_ = false
|
|
9
|
+
@fail_on_error_ = false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def unstable_on_warning(value = true)
|
|
13
|
+
@unstable_on_warning_ = value
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def fail_on_error(value = true)
|
|
17
|
+
@fail_on_error_ = value
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# dsl methods for job builder
|
|
2
|
+
module JenkinsJob
|
|
3
|
+
module Postbuild
|
|
4
|
+
class NUnitPublisher < BasicObject
|
|
5
|
+
attr_reader :test_results_pattern_, :debug_, :keep_junit_reports_,
|
|
6
|
+
:skip_junit_archiver_
|
|
7
|
+
|
|
8
|
+
def initialize(test_results_pattern)
|
|
9
|
+
@test_results_pattern_ = test_results_pattern
|
|
10
|
+
|
|
11
|
+
@debug_ = false
|
|
12
|
+
@keep_junit_reports_ = false
|
|
13
|
+
@skip_junit_archiver_ = false
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_results_pattern(value)
|
|
17
|
+
@test_results_pattern_ = value
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class PMDPublisher < BasicObject
|
|
4
|
+
attr_reader :pmd_results_, :threshold_limit_
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@threshold_limit_ = 'low'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def pmd_results(value)
|
|
11
|
+
@pmd_results_ = value
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def threshold_limit(value)
|
|
15
|
+
@threshold_limit_ = value
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class TapPublisher < BasicObject
|
|
4
|
+
attr_reader :test_results_,
|
|
5
|
+
:verbose_,
|
|
6
|
+
:fail_if_no_test_results_,
|
|
7
|
+
:fail_if_test_fail_,
|
|
8
|
+
:include_diagnostics_,
|
|
9
|
+
:require_plan_
|
|
10
|
+
|
|
11
|
+
def initialize(test_restult)
|
|
12
|
+
@test_results_ = test_restult
|
|
13
|
+
@fail_if_test_fail_ = true
|
|
14
|
+
@fail_if_no_test_results_ = true
|
|
15
|
+
@include_diagnostics_ = true
|
|
16
|
+
@require_plan_ = false
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_results(value)
|
|
20
|
+
@test_results_ = value
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def verbose(value = true)
|
|
24
|
+
@verbose_ = value
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def fail_if_no_test_results(value = true)
|
|
28
|
+
@fail_if_no_test_results_ = value
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def fail_if_test_fail(value = true)
|
|
32
|
+
@fail_if_test_fail_ = value
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def include_diagnostics(value = true)
|
|
36
|
+
@include_diagnostics_ = value
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def require_plan(value = true)
|
|
40
|
+
@require_plan_ = value
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class PostbuildTrigger < BasicObject
|
|
4
|
+
attr_reader :project_, :fail_on_missing_, :file_,
|
|
5
|
+
:predefined_parameters_, :current_parameters_, :trigger_with_no_parameters_,
|
|
6
|
+
:pass_through_git_commit_
|
|
7
|
+
|
|
8
|
+
def initialize(*project)
|
|
9
|
+
@project_ = project
|
|
10
|
+
@trigger_with_no_parameters_ = false
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def fail_on_missing(value = false)
|
|
14
|
+
@fail_on_missing_ = value
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def file(value)
|
|
18
|
+
@file_ = value
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def predefined_parameters(value)
|
|
22
|
+
@predefined_parameters_ = value.map { |key, val| "#{key}=#{val}" }.join("\n")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def current_parameters(value)
|
|
26
|
+
@current_parameters_ = value
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def trigger_with_no_parameters(value)
|
|
30
|
+
@trigger_with_no_parameters_ = value
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def pass_through_git_commit(value = true)
|
|
34
|
+
@pass_through_git_commit_ = value
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# dsl methods for job builder
|
|
2
|
+
module JenkinsJob
|
|
3
|
+
module Postbuild
|
|
4
|
+
class XUnitPublisher < BasicObject
|
|
5
|
+
attr_reader :test_results_pattern_,
|
|
6
|
+
:failed_threshold_, :unstable_threshold_
|
|
7
|
+
|
|
8
|
+
THRESH_HOLDS = [:total_failed_tests, :new_failed_tests,
|
|
9
|
+
:total_skipped_tests, :new_skipped_tests]
|
|
10
|
+
|
|
11
|
+
def initialize(test_results_pattern)
|
|
12
|
+
@test_results_pattern_ = test_results_pattern
|
|
13
|
+
|
|
14
|
+
@debug_ = false
|
|
15
|
+
@keep_junit_reports_ = false
|
|
16
|
+
@skip_junit_archiver_ = false
|
|
17
|
+
|
|
18
|
+
@failed_threshold_ = {}
|
|
19
|
+
@unstable_threshold_ = {}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_results_pattern(value)
|
|
23
|
+
@test_results_pattern_ = value
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def failed_threshold(params = {})
|
|
27
|
+
@failed_threshold_ = params
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def unstable_threshold(params = {})
|
|
31
|
+
@unstable_threshold_ = params
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|