rubyjobbuilderdsl 0.0.5 → 0.0.6

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.
Files changed (111) hide show
  1. checksums.yaml +13 -5
  2. data/Gemfile +6 -6
  3. data/Gemfile.lock +41 -41
  4. data/LICENSE +18 -18
  5. data/Rakefile +12 -12
  6. data/docs/common.md +313 -313
  7. data/docs/flow.md +17 -17
  8. data/docs/freestyle.md +100 -100
  9. data/docs/gerrit.md +70 -70
  10. data/docs/git.md +88 -88
  11. data/docs/multi.md +26 -26
  12. data/docs/overview.md +74 -74
  13. data/docs/postbuild.md +266 -266
  14. data/docs/view.md +13 -13
  15. data/lib/rubyjobbuilderdsl.rb +2 -2
  16. data/lib/rubyjobbuilderdsl/buildstep/ant.rb +29 -29
  17. data/lib/rubyjobbuilderdsl/buildstep/copyartifact.rb +23 -23
  18. data/lib/rubyjobbuilderdsl/buildstep/inject_env.rb +18 -18
  19. data/lib/rubyjobbuilderdsl/buildstep/phase.rb +19 -19
  20. data/lib/rubyjobbuilderdsl/buildstep/phase_job.rb +26 -26
  21. data/lib/rubyjobbuilderdsl/buildstep/shell.rb +24 -24
  22. data/lib/rubyjobbuilderdsl/buildstep/xvfb.rb +46 -46
  23. data/lib/rubyjobbuilderdsl/common.rb +140 -140
  24. data/lib/rubyjobbuilderdsl/common/artifactory.rb +33 -33
  25. data/lib/rubyjobbuilderdsl/common/blocking_job.rb +11 -11
  26. data/lib/rubyjobbuilderdsl/common/build_timeout.rb +23 -23
  27. data/lib/rubyjobbuilderdsl/common/gerrit.rb +53 -53
  28. data/lib/rubyjobbuilderdsl/common/git.rb +76 -76
  29. data/lib/rubyjobbuilderdsl/common/logrotate.rb +24 -24
  30. data/lib/rubyjobbuilderdsl/common/parameter.rb +22 -22
  31. data/lib/rubyjobbuilderdsl/common/password.rb +12 -12
  32. data/lib/rubyjobbuilderdsl/common/pollscm.rb +10 -10
  33. data/lib/rubyjobbuilderdsl/common/scms.rb +18 -18
  34. data/lib/rubyjobbuilderdsl/common/throttle.rb +24 -24
  35. data/lib/rubyjobbuilderdsl/common/timed.rb +10 -10
  36. data/lib/rubyjobbuilderdsl/common/timestamps.rb +6 -6
  37. data/lib/rubyjobbuilderdsl/deployer.rb +95 -95
  38. data/lib/rubyjobbuilderdsl/flow.rb +14 -14
  39. data/lib/rubyjobbuilderdsl/freestyle.rb +65 -65
  40. data/lib/rubyjobbuilderdsl/jenkins_client.rb +203 -203
  41. data/lib/rubyjobbuilderdsl/multijob.rb +24 -24
  42. data/lib/rubyjobbuilderdsl/postbuild.rb +160 -160
  43. data/lib/rubyjobbuilderdsl/postbuild/archive.rb +23 -23
  44. data/lib/rubyjobbuilderdsl/postbuild/chucknorris_publisher.rb +6 -6
  45. data/lib/rubyjobbuilderdsl/postbuild/claim_publisher.rb +6 -6
  46. data/lib/rubyjobbuilderdsl/postbuild/cloverphp_publisher.rb +36 -36
  47. data/lib/rubyjobbuilderdsl/postbuild/cucumber_json_publisher.rb +20 -20
  48. data/lib/rubyjobbuilderdsl/postbuild/email_publisher.rb +23 -23
  49. data/lib/rubyjobbuilderdsl/postbuild/game_publisher.rb +6 -6
  50. data/lib/rubyjobbuilderdsl/postbuild/groovy.rb +10 -10
  51. data/lib/rubyjobbuilderdsl/postbuild/html_publisher.rb +27 -27
  52. data/lib/rubyjobbuilderdsl/postbuild/javadoc_publisher.rb +19 -19
  53. data/lib/rubyjobbuilderdsl/postbuild/logparser.rb +21 -21
  54. data/lib/rubyjobbuilderdsl/postbuild/nunit_publisher.rb +21 -21
  55. data/lib/rubyjobbuilderdsl/postbuild/pmd_publisher.rb +19 -19
  56. data/lib/rubyjobbuilderdsl/postbuild/script.rb +14 -14
  57. data/lib/rubyjobbuilderdsl/postbuild/tap_publisher.rb +44 -44
  58. data/lib/rubyjobbuilderdsl/postbuild/trigger.rb +38 -38
  59. data/lib/rubyjobbuilderdsl/postbuild/xunit_publisher.rb +35 -35
  60. data/lib/rubyjobbuilderdsl/view.rb +14 -14
  61. data/lib/rubyjobbuilderdsl/xml_generator.rb +1 -1
  62. data/rubyjobbuilderdsl.gemspec +2 -2
  63. data/rubyjobbuilderdsl.sublime-project +14 -14
  64. data/run_tests.sh +7 -7
  65. data/sample/hello_mars.rb +27 -27
  66. data/sample/hello_mars.xml +18 -0
  67. data/sample/hello_world-post.xml +40 -0
  68. data/sample/local.ini +4 -4
  69. data/sample/test.xml +21 -0
  70. data/test/test_ant.rb +38 -38
  71. data/test/test_archive.rb +24 -24
  72. data/test/test_artifactory.rb +26 -26
  73. data/test/test_blocking_job.rb +18 -18
  74. data/test/test_chucknorris_publisher.rb +17 -17
  75. data/test/test_claim_publisher.rb +17 -17
  76. data/test/test_cloverphp.rb +33 -33
  77. data/test/test_concurrent.rb +44 -44
  78. data/test/test_copyartifact.rb +45 -45
  79. data/test/test_cucumber_json_publisher.rb +30 -30
  80. data/test/test_default_setting.rb +29 -29
  81. data/test/test_email_publisher.rb +44 -44
  82. data/test/test_flow.rb +19 -19
  83. data/test/test_freestyle.rb +52 -52
  84. data/test/test_game_publisher.rb +17 -17
  85. data/test/test_gerrit.rb +117 -117
  86. data/test/test_git.rb +80 -80
  87. data/test/test_html_publisher.rb +57 -57
  88. data/test/test_inject.rb +23 -23
  89. data/test/test_javadoc.rb +22 -22
  90. data/test/test_logparser.rb +24 -24
  91. data/test/test_logrotate.rb +22 -22
  92. data/test/test_multijob.rb +50 -50
  93. data/test/test_nunit_publisher.rb +20 -20
  94. data/test/test_parameter.rb +44 -44
  95. data/test/test_password.rb +17 -17
  96. data/test/test_pmd.rb +22 -22
  97. data/test/test_pollscm.rb +15 -15
  98. data/test/test_postbuild_groovy.rb +21 -21
  99. data/test/test_postbuild_script.rb +24 -24
  100. data/test/test_postbuild_trigger.rb +170 -170
  101. data/test/test_scms.rb +31 -31
  102. data/test/test_tap_publisher.rb +25 -25
  103. data/test/test_timed.rb +15 -15
  104. data/test/test_timeout.rb +20 -20
  105. data/test/test_timestamps.rb +14 -14
  106. data/test/test_xml_generator.rb +28 -28
  107. data/test/test_xunit_publisher.rb +22 -22
  108. data/test/test_xvfb.rb +35 -35
  109. metadata +11 -10
  110. data/rubyjobbuilderdsl-0.0.3.gem +0 -0
  111. data/sample/Schedule-sample-pipeline.xml +0 -32
@@ -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