rubyjobbuilderdsl 0.0.4 → 0.0.5
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 +5 -13
- data/Gemfile +6 -6
- data/Gemfile.lock +41 -41
- data/LICENSE +18 -18
- data/Rakefile +12 -12
- data/docs/common.md +313 -313
- data/docs/flow.md +17 -17
- data/docs/freestyle.md +100 -100
- data/docs/gerrit.md +70 -70
- data/docs/git.md +88 -88
- data/docs/multi.md +26 -26
- data/docs/overview.md +74 -74
- data/docs/postbuild.md +266 -266
- data/docs/view.md +13 -13
- data/lib/rubyjobbuilderdsl/buildstep/ant.rb +29 -29
- data/lib/rubyjobbuilderdsl/buildstep/copyartifact.rb +23 -23
- data/lib/rubyjobbuilderdsl/buildstep/inject_env.rb +18 -18
- data/lib/rubyjobbuilderdsl/buildstep/phase.rb +19 -19
- data/lib/rubyjobbuilderdsl/buildstep/phase_job.rb +26 -26
- data/lib/rubyjobbuilderdsl/buildstep/shell.rb +24 -24
- data/lib/rubyjobbuilderdsl/buildstep/xvfb.rb +46 -46
- data/lib/rubyjobbuilderdsl/common/artifactory.rb +33 -33
- data/lib/rubyjobbuilderdsl/common/blocking_job.rb +11 -11
- data/lib/rubyjobbuilderdsl/common/build_timeout.rb +23 -23
- data/lib/rubyjobbuilderdsl/common/gerrit.rb +53 -53
- data/lib/rubyjobbuilderdsl/common/git.rb +76 -76
- data/lib/rubyjobbuilderdsl/common/logrotate.rb +24 -24
- data/lib/rubyjobbuilderdsl/common/parameter.rb +22 -22
- data/lib/rubyjobbuilderdsl/common/password.rb +12 -12
- data/lib/rubyjobbuilderdsl/common/pollscm.rb +10 -10
- data/lib/rubyjobbuilderdsl/common/scms.rb +18 -18
- data/lib/rubyjobbuilderdsl/common/throttle.rb +24 -24
- data/lib/rubyjobbuilderdsl/common/timed.rb +10 -10
- data/lib/rubyjobbuilderdsl/common/timestamps.rb +6 -6
- data/lib/rubyjobbuilderdsl/common.rb +140 -140
- data/lib/rubyjobbuilderdsl/deployer.rb +95 -95
- data/lib/rubyjobbuilderdsl/flow.rb +14 -14
- data/lib/rubyjobbuilderdsl/freestyle.rb +65 -65
- data/lib/rubyjobbuilderdsl/jenkins_client.rb +203 -203
- data/lib/rubyjobbuilderdsl/multijob.rb +24 -24
- data/lib/rubyjobbuilderdsl/postbuild/archive.rb +23 -23
- data/lib/rubyjobbuilderdsl/postbuild/chucknorris_publisher.rb +6 -6
- data/lib/rubyjobbuilderdsl/postbuild/claim_publisher.rb +6 -6
- data/lib/rubyjobbuilderdsl/postbuild/cloverphp_publisher.rb +36 -36
- data/lib/rubyjobbuilderdsl/postbuild/cucumber_json_publisher.rb +20 -20
- data/lib/rubyjobbuilderdsl/postbuild/email_publisher.rb +23 -23
- data/lib/rubyjobbuilderdsl/postbuild/game_publisher.rb +6 -6
- data/lib/rubyjobbuilderdsl/postbuild/groovy.rb +10 -10
- data/lib/rubyjobbuilderdsl/postbuild/html_publisher.rb +27 -27
- data/lib/rubyjobbuilderdsl/postbuild/javadoc_publisher.rb +19 -19
- data/lib/rubyjobbuilderdsl/postbuild/logparser.rb +21 -21
- data/lib/rubyjobbuilderdsl/postbuild/nunit_publisher.rb +21 -21
- data/lib/rubyjobbuilderdsl/postbuild/pmd_publisher.rb +19 -19
- data/lib/rubyjobbuilderdsl/postbuild/script.rb +14 -14
- data/lib/rubyjobbuilderdsl/postbuild/tap_publisher.rb +44 -44
- data/lib/rubyjobbuilderdsl/postbuild/trigger.rb +38 -38
- data/lib/rubyjobbuilderdsl/postbuild/xunit_publisher.rb +35 -35
- data/lib/rubyjobbuilderdsl/postbuild.rb +160 -160
- data/lib/rubyjobbuilderdsl/view.rb +14 -14
- data/lib/rubyjobbuilderdsl/xml_generator.rb +1 -1
- data/lib/rubyjobbuilderdsl.rb +2 -2
- data/rubyjobbuilderdsl-0.0.3.gem +0 -0
- data/rubyjobbuilderdsl.gemspec +13 -13
- data/rubyjobbuilderdsl.sublime-project +14 -14
- data/run_tests.sh +7 -7
- data/sample/Schedule-sample-pipeline.xml +32 -0
- data/sample/hello_mars.rb +27 -27
- data/sample/local.ini +4 -4
- data/test/test_ant.rb +38 -38
- data/test/test_archive.rb +24 -24
- data/test/test_artifactory.rb +26 -26
- data/test/test_blocking_job.rb +18 -18
- data/test/test_chucknorris_publisher.rb +17 -17
- data/test/test_claim_publisher.rb +17 -17
- data/test/test_cloverphp.rb +33 -33
- data/test/test_concurrent.rb +44 -44
- data/test/test_copyartifact.rb +45 -45
- data/test/test_cucumber_json_publisher.rb +30 -30
- data/test/test_default_setting.rb +29 -29
- data/test/test_email_publisher.rb +44 -44
- data/test/test_flow.rb +19 -19
- data/test/test_freestyle.rb +52 -52
- data/test/test_game_publisher.rb +17 -17
- data/test/test_gerrit.rb +117 -117
- data/test/test_git.rb +80 -80
- data/test/test_html_publisher.rb +57 -57
- data/test/test_inject.rb +23 -23
- data/test/test_javadoc.rb +22 -22
- data/test/test_logparser.rb +24 -24
- data/test/test_logrotate.rb +22 -22
- data/test/test_multijob.rb +50 -50
- data/test/test_nunit_publisher.rb +20 -20
- data/test/test_parameter.rb +44 -44
- data/test/test_password.rb +17 -17
- data/test/test_pmd.rb +22 -22
- data/test/test_pollscm.rb +15 -15
- data/test/test_postbuild_groovy.rb +21 -21
- data/test/test_postbuild_script.rb +24 -24
- data/test/test_postbuild_trigger.rb +170 -170
- data/test/test_scms.rb +31 -31
- data/test/test_tap_publisher.rb +25 -25
- data/test/test_timed.rb +15 -15
- data/test/test_timeout.rb +20 -20
- data/test/test_timestamps.rb +14 -14
- data/test/test_xml_generator.rb +28 -28
- data/test/test_xunit_publisher.rb +22 -22
- data/test/test_xvfb.rb +35 -35
- metadata +9 -11
- data/sample/hello_mars.xml +0 -18
- data/sample/hello_world-post.xml +0 -40
- data/sample/sample_flow.rb +0 -15
- data/sample/test.xml +0 -21
|
@@ -1,203 +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
|
|
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
|
|
@@ -1,24 +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
|
|
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
|
|
@@ -1,23 +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
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
module JenkinsJob
|
|
2
|
-
module Postbuild
|
|
3
|
-
class ChuckNorrisPublisher < BasicObject
|
|
4
|
-
end
|
|
5
|
-
end
|
|
6
|
-
end
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class ChuckNorrisPublisher < BasicObject
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
module JenkinsJob
|
|
2
|
-
module Postbuild
|
|
3
|
-
class ClaimPublisher < BasicObject
|
|
4
|
-
end
|
|
5
|
-
end
|
|
6
|
-
end
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class ClaimPublisher < BasicObject
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
end
|
|
@@ -1,36 +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
|
|
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
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
module JenkinsJob
|
|
2
|
-
module Postbuild
|
|
3
|
-
class CucumberJsonPublisher < BasicObject
|
|
4
|
-
attr_reader :test_results_, :ignore_bad_tests_
|
|
5
|
-
|
|
6
|
-
def initialize
|
|
7
|
-
@test_results_ = 'results.json'
|
|
8
|
-
@ignore_bad_tests_ = false
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def test_results(value)
|
|
12
|
-
@test_results_ = value
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def ignore_bad_tests(value)
|
|
16
|
-
@ignore_bad_tests_ = value
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
1
|
+
module JenkinsJob
|
|
2
|
+
module Postbuild
|
|
3
|
+
class CucumberJsonPublisher < BasicObject
|
|
4
|
+
attr_reader :test_results_, :ignore_bad_tests_
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@test_results_ = 'results.json'
|
|
8
|
+
@ignore_bad_tests_ = false
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_results(value)
|
|
12
|
+
@test_results_ = value
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def ignore_bad_tests(value)
|
|
16
|
+
@ignore_bad_tests_ = value
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|