hudson-remote-api 0.2.3 → 0.3.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.3.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hudson-remote-api}
8
- s.version = "0.2.3"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dru Ibarra"]
12
- s.date = %q{2011-06-02}
12
+ s.date = %q{2011-09-06}
13
13
  s.description = %q{Connect to Hudson's remote web API}
14
14
  s.email = %q{Druwerd@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "lib/hudson-remote-api/errors.rb",
31
31
  "lib/hudson-remote-api/job.rb",
32
32
  "lib/hudson-remote-api/multicast.rb",
33
+ "lib/hudson-remote-api/new_job_config.xml",
33
34
  "test/test_hudson_build.rb",
34
35
  "test/test_hudson_build_queue.rb",
35
36
  "test/test_hudson_config.rb",
@@ -23,7 +23,6 @@ module Hudson
23
23
  load_xml_api
24
24
 
25
25
  def self.get_xml(url)
26
- puts url
27
26
  uri = URI.parse(url)
28
27
  host = uri.host
29
28
  port = uri.port
@@ -50,7 +49,7 @@ module Hudson
50
49
  self.class.get_xml(path)
51
50
  end
52
51
 
53
- def send_post_request(url, data={})
52
+ def self.send_post_request(url, data={})
54
53
  uri = URI.parse(url)
55
54
  host = uri.host
56
55
  port = uri.port
@@ -58,22 +57,29 @@ module Hudson
58
57
  request = Net::HTTP::Post.new(path)
59
58
  request.basic_auth(Hudson[:user], Hudson[:password]) if Hudson[:user] and Hudson[:password]
60
59
  request.set_form_data(data)
61
- #puts request.to_yaml
62
60
  Net::HTTP.new(host, port).start{|http| http.request(request)}
63
61
  end
62
+
63
+ def send_post_request(url, data={})
64
+ self.class.send_post_request(url, data)
65
+ end
64
66
 
65
- def send_xml_post_request(url, xml)
67
+ def self.send_xml_post_request(url, xml, data=nil)
66
68
  uri = URI.parse(url)
67
69
  host = uri.host
68
70
  port = uri.port
69
71
  path = uri.path
72
+ path = path+"?"+uri.query if uri.query
70
73
  request = Net::HTTP::Post.new(path)
71
74
  request.basic_auth(Hudson[:user], Hudson[:password]) if Hudson[:user] and Hudson[:password]
75
+ request.set_form_data(data) if data
72
76
  request.body = xml
73
- #puts request.body
74
- #puts request.to_yaml
75
77
  Net::HTTP.new(host, port).start{|http| http.request(request)}
76
78
  end
79
+
80
+ def send_xml_post_request(url, xml, data=nil)
81
+ self.class.send_xml_post_request(url, xml, data)
82
+ end
77
83
  end
78
84
  end
79
85
 
@@ -32,7 +32,6 @@ module Hudson
32
32
  def self.auto_config
33
33
  xml_response = discover()
34
34
  if xml_response
35
- #puts xml_response
36
35
  doc = REXML::Document.new(xml_response)
37
36
  url = doc.elements["/hudson/url"]
38
37
  if url
@@ -31,11 +31,31 @@ module Hudson
31
31
  active_jobs
32
32
  end
33
33
 
34
- def initialize(name)
35
- @name = name
36
- load_xml_api
37
- load_config
38
- load_info
34
+ def self.get(job_name)
35
+ job_name.strip!
36
+ if list.include?(job_name)
37
+ Job.new(job_name)
38
+ else
39
+ nil
40
+ end
41
+ end
42
+
43
+ def initialize(name, config=nil)
44
+ name.strip!
45
+ if Job.list.include?(name)
46
+ @name = name
47
+ load_xml_api
48
+ load_config
49
+ load_info
50
+ self
51
+ else
52
+ j = Job.create(name, config)
53
+ @name = j.name
54
+ load_xml_api
55
+ load_config
56
+ load_info
57
+ self
58
+ end
39
59
  end
40
60
 
41
61
  def load_xml_api
@@ -97,6 +117,14 @@ module Hudson
97
117
  end
98
118
  end
99
119
 
120
+ def self.create(name, config=nil)
121
+ config = File.open(File.dirname(__FILE__) + '/new_job_config.xml').read if config.nil?
122
+
123
+ response = send_post_request(@@xml_api_create_item_path, {:name=>name, :mode=>"hudson.model.FreeStyleProject", :config=>config})
124
+ raise(APIError, "Error creating job #{name}: #{response.body}") if response.class != Net::HTTPFound
125
+ Job.get(name)
126
+ end
127
+
100
128
  # Create a new job on Hudson server based on the current job object
101
129
  def copy(new_job=nil)
102
130
  new_job = "copy_of_#{@name}" if new_job.nil?
@@ -160,13 +188,11 @@ module Hudson
160
188
 
161
189
  def disable()
162
190
  response = send_post_request(@xml_api_disable_path)
163
- puts response.class
164
191
  response.is_a?(Net::HTTPSuccess) or response.is_a?(Net::HTTPRedirection)
165
192
  end
166
193
 
167
194
  def enable()
168
195
  response = send_post_request(@xml_api_enable_path)
169
- puts response.class
170
196
  response.is_a?(Net::HTTPSuccess) or response.is_a?(Net::HTTPRedirection)
171
197
  end
172
198
 
@@ -0,0 +1,16 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <project>
3
+ <actions/>
4
+ <description></description>
5
+ <keepDependencies>false</keepDependencies>
6
+ <properties/>
7
+ <scm class="hudson.scm.NullSCM"/>
8
+ <canRoam>true</canRoam>
9
+ <disabled>false</disabled>
10
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
11
+ <triggers class="vector"/>
12
+ <concurrentBuild>false</concurrentBuild>
13
+ <builders/>
14
+ <publishers/>
15
+ <buildWrappers/>
16
+ </project>
@@ -16,9 +16,16 @@ class TestHudsonJob < Test::Unit::TestCase
16
16
  assert Hudson::Job.list_active
17
17
  end
18
18
 
19
- def test_init
20
- # TODO: load job fixtures
21
- job = Hudson::Job.new('test_job')
19
+ def test_create
20
+ new_job_name = 'new_test_job'
21
+ new_job = Hudson::Job.create(new_job_name)
22
+ assert new_job
23
+ assert_equal(new_job.name, new_job_name)
24
+ assert new_job.delete
25
+ end
26
+
27
+ def test_get
28
+ job = Hudson::Job.get('test_job')
22
29
  assert job
23
30
  assert_equal 'test_job', job.name, "failed to get job name"
24
31
  end
@@ -28,4 +35,23 @@ class TestHudsonJob < Test::Unit::TestCase
28
35
  assert job.description
29
36
  assert job.description = "test"
30
37
  end
38
+
39
+ def test_new
40
+ job = Hudson::Job.new('test_job')
41
+ assert job
42
+ assert_equal(job.name, 'test_job')
43
+
44
+ new_job = Hudson::Job.new('test_job2')
45
+ assert new_job
46
+ assert_equal('test_job2', new_job.name)
47
+ assert new_job.delete
48
+ end
49
+
50
+ def test_copy
51
+ job = Hudson::Job.get('test_job')
52
+ new_job = job.copy
53
+ assert new_job
54
+ assert_equal(new_job.name, 'copy_of_test_job')
55
+ assert new_job.delete
56
+ end
31
57
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hudson-remote-api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
8
  - 3
10
- version: 0.2.3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dru Ibarra
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-02 00:00:00 -07:00
18
+ date: 2011-09-06 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -42,6 +42,7 @@ files:
42
42
  - lib/hudson-remote-api/errors.rb
43
43
  - lib/hudson-remote-api/job.rb
44
44
  - lib/hudson-remote-api/multicast.rb
45
+ - lib/hudson-remote-api/new_job_config.xml
45
46
  - test/test_hudson_build.rb
46
47
  - test/test_hudson_build_queue.rb
47
48
  - test/test_hudson_config.rb