go_cd_feed 1.1.0 → 1.1.1
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/Gemfile.lock +1 -1
- data/go_cd_feed.gemspec +1 -1
- data/lib/go_api_client.rb +2 -1
- data/lib/go_api_client/atom/feed.rb +3 -3
- data/lib/go_api_client/git_material.rb +25 -0
- data/lib/go_api_client/pipeline.rb +3 -3
- data/test/go_api_client/commit_test.rb +3 -2
- data/test/go_api_client/git_material_test.rb +36 -0
- data/test/go_api_client/pipeline_test.rb +2 -2
- data/test/go_api_client/stage_test.rb +2 -2
- metadata +5 -2
data/Gemfile.lock
CHANGED
data/go_cd_feed.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "go_cd_feed"
|
6
|
-
s.version = '1.1.
|
6
|
+
s.version = '1.1.1'
|
7
7
|
s.authors = ["Nikhil Mungel", "Ketan Padegaonkar", "Shishir Das", "Bill DePhillips"]
|
8
8
|
s.email = ["hyfather@gmail.com", "KetanPadegaonkar@gmail.com", "shishir.das@gmail.com", "bill.dephillips@gmail.com"]
|
9
9
|
s.homepage = "http://github.com/rearadmiral/go-api-client.git"
|
data/lib/go_api_client.rb
CHANGED
@@ -10,6 +10,7 @@ require 'go_api_client/atom'
|
|
10
10
|
require 'go_api_client/pipeline'
|
11
11
|
require 'go_api_client/stage'
|
12
12
|
require 'go_api_client/job'
|
13
|
+
require 'go_api_client/git_material'
|
13
14
|
require 'go_api_client/commit'
|
14
15
|
require 'go_api_client/dependency_material'
|
15
16
|
require 'go_api_client/user'
|
@@ -24,7 +25,7 @@ module GoApiClient
|
|
24
25
|
|
25
26
|
feed_url = "#{options[:protocol]}://#{options[:host]}:#{options[:port]}/go/api/pipelines/#{options[:pipeline_name]}/stages.xml"
|
26
27
|
|
27
|
-
feed = GoApiClient::Atom::Feed.new(feed_url, options[:latest_atom_entry_id])
|
28
|
+
feed = GoApiClient::Atom::Feed.new(feed_url, options[:latest_atom_entry_id], options[:page_fetch_limit])
|
28
29
|
feed.fetch!(http_fetcher)
|
29
30
|
|
30
31
|
pipelines = {}
|
@@ -6,7 +6,7 @@ module GoApiClient
|
|
6
6
|
def initialize(atom_feed_url, last_entry_id=nil, page_fetch_limit=nil)
|
7
7
|
@atom_feed_url = atom_feed_url
|
8
8
|
@last_entry_id = last_entry_id
|
9
|
-
@page_fetch_limit = page_fetch_limit
|
9
|
+
@page_fetch_limit = page_fetch_limit.to_i
|
10
10
|
end
|
11
11
|
|
12
12
|
def fetch!(http_fetcher = HttpFetcher.new)
|
@@ -17,10 +17,10 @@ module GoApiClient
|
|
17
17
|
begin
|
18
18
|
doc = Nokogiri::XML(http_fetcher.get_response_body(feed_url))
|
19
19
|
pages_fetched += 1
|
20
|
-
if @page_fetch_limit && pages_fetched > @page_fetch_limit
|
20
|
+
if @page_fetch_limit > 0 && pages_fetched > @page_fetch_limit
|
21
21
|
puts "=" * 100
|
22
22
|
puts ""
|
23
|
-
puts "[GoApiClient] not fetching past #{page_fetch_limit} pages of the Go.CD event feed."
|
23
|
+
puts "[GoApiClient] not fetching past #{@page_fetch_limit} pages of the Go.CD event feed."
|
24
24
|
puts "If there is no green build in those pages, your app may not work properly."
|
25
25
|
puts "Get your build green first!"
|
26
26
|
puts ""
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'commit'
|
2
|
+
|
3
|
+
module GoApiClient
|
4
|
+
|
5
|
+
class GitMaterial
|
6
|
+
|
7
|
+
attr_reader :commits, :repository_url
|
8
|
+
|
9
|
+
def initialize(root)
|
10
|
+
@root = root
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse!
|
14
|
+
@repository_url = @root['url']
|
15
|
+
@commits = @root.xpath('./modifications/changeset').collect do |changeset|
|
16
|
+
Commit.new(changeset).parse!
|
17
|
+
end
|
18
|
+
@root = nil
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module GoApiClient
|
2
2
|
class Pipeline
|
3
|
-
attr_accessor :url, :
|
3
|
+
attr_accessor :url, :label, :counter, :authors, :stages, :name, :http_fetcher, :identifier, :schedule_time, :dependencies, :materials
|
4
4
|
|
5
5
|
include GoApiClient::Helpers::SimpleAttributesSupport
|
6
6
|
|
@@ -28,8 +28,8 @@ module GoApiClient
|
|
28
28
|
self.url = href_from(@root.xpath("./link[@rel='self']"))
|
29
29
|
self.identifier = @root.xpath("./id").first.content
|
30
30
|
self.schedule_time = Time.parse(@root.xpath('./scheduleTime').first.content).utc
|
31
|
-
self.
|
32
|
-
|
31
|
+
self.materials = @root.xpath('./materials/material[@type="GitMaterial"]').collect do |git_material|
|
32
|
+
GitMaterial.new(git_material).parse!
|
33
33
|
end
|
34
34
|
self.dependencies = @root.xpath('./materials/material[@type="DependencyMaterial"]').collect do |dependency|
|
35
35
|
DependencyMaterial.new(dependency).parse!
|
@@ -3,8 +3,9 @@ require "test_helper"
|
|
3
3
|
module GoApiClient
|
4
4
|
class CommitTest < Test::Unit::TestCase
|
5
5
|
|
6
|
-
test "should parse a changeset xml node" do
|
7
|
-
doc = Nokogiri::XML.parse %q{
|
6
|
+
test "should parse a material with changeset xml node" do
|
7
|
+
doc = Nokogiri::XML.parse %q{
|
8
|
+
<changeset changesetUri="http://localhost:8153/go/api/materials/1/changeset/9f77888d7a594699894a17f4d61fc9dfac3cfb74.xml">
|
8
9
|
<bar>
|
9
10
|
<revision>jhgasdfjkhgads</revision>
|
10
11
|
<message>some message</message>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module GoApiClient
|
4
|
+
class GitMaterialTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
test "should parse a material xml with 2 changesets" do
|
7
|
+
doc = Nokogiri::XML.parse %q{
|
8
|
+
<material materialUri="https://go.thoughtworks.com/go/api/materials/18170.xml" type="GitMaterial" url="https://studios-scm.thoughtworks.com/saas" branch="master">
|
9
|
+
<modifications>
|
10
|
+
<changeset changesetUri="http://localhost:8153/go/api/materials/1/changeset/9f77888d7a594699894a17f4d61fc9dfac3cfb74.xml">
|
11
|
+
<user><![CDATA[osito <osito@bonito.com>]]></user>
|
12
|
+
<checkinTime>2012-02-21T15:42:30+05:30</checkinTime>
|
13
|
+
<revision><![CDATA[9f77888d7a594699894a17f4d61fc9dfac3cfb74]]></revision>
|
14
|
+
<message><![CDATA[Update README]]></message>
|
15
|
+
<file name="README" action="modified"/>
|
16
|
+
</changeset>
|
17
|
+
<changeset changesetUri="http://localhost:8153/go/api/materials/1/changeset/abcd123.xml">
|
18
|
+
<user><![CDATA[zorro <zorro@poms.net>]]></user>
|
19
|
+
<checkinTime>2012-02-20T15:41:30+05:30</checkinTime>
|
20
|
+
<revision><![CDATA[abcd123]]></revision>
|
21
|
+
<message><![CDATA[fixin' the bugs]]></message>
|
22
|
+
<file name="buggy_code.rb" action="modified"/>
|
23
|
+
</changeset>
|
24
|
+
</modifications>
|
25
|
+
</material>
|
26
|
+
|
27
|
+
}
|
28
|
+
|
29
|
+
material = GitMaterial.new(doc.root).parse!
|
30
|
+
|
31
|
+
assert_equal "https://studios-scm.thoughtworks.com/saas", material.repository_url
|
32
|
+
assert_equal 2, material.commits.size
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -16,7 +16,7 @@ module GoApiClient
|
|
16
16
|
assert_equal 99, pipeline.counter
|
17
17
|
assert_equal "defaultPipeline", pipeline.name
|
18
18
|
assert_equal "http://localhost:8153/go/api/pipelines/defaultPipeline/1.xml", pipeline.url
|
19
|
-
assert_equal ["Update README", "Fixed build"], pipeline.commits.collect(&:message)
|
19
|
+
assert_equal ["Update README", "Fixed build"], pipeline.materials.map { |material| material.commits.collect(&:message) }.flatten
|
20
20
|
assert_equal "urn:x-go.studios.thoughtworks.com:job-id:defaultPipeline:1", pipeline.identifier
|
21
21
|
assert_equal Time.parse('2012-02-23 11:46:15 UTC'), pipeline.schedule_time
|
22
22
|
end
|
@@ -35,7 +35,7 @@ module GoApiClient
|
|
35
35
|
link = 'http://localhost:8153/go/api/pipelines/defaultPipeline/2.xml'
|
36
36
|
pipeline = GoApiClient::Pipeline.from(link)
|
37
37
|
|
38
|
-
assert_equal 1, pipeline.
|
38
|
+
assert_equal 1, pipeline.materials.size
|
39
39
|
assert_equal 1, pipeline.dependencies.size
|
40
40
|
|
41
41
|
end
|
@@ -38,7 +38,7 @@ module GoApiClient
|
|
38
38
|
|
39
39
|
assert_equal "http://localhost:8153/go/api/stages/1.xml", stages.first.url
|
40
40
|
assert_equal "http://localhost:8153/go/api/stages/2.xml", stages.last.url
|
41
|
-
|
41
|
+
|
42
42
|
assert_equal 1, stages.first.counter
|
43
43
|
assert_equal 1, stages.last.counter
|
44
44
|
|
@@ -56,7 +56,7 @@ module GoApiClient
|
|
56
56
|
assert_equal "Units", stages.first.name
|
57
57
|
assert_equal "Acceptance", stages.last.name
|
58
58
|
|
59
|
-
assert_equal ["Update README", "Fixed build"], pipelines.first.commits.collect(&:message)
|
59
|
+
assert_equal ["Update README", "Fixed build"], pipelines.first.materials.map { |material| material.commits.collect(&:message) }.flatten
|
60
60
|
|
61
61
|
assert_equal "http://localhost:8153/go/files/defaultPipeline/1/Units/1/Test/cruise-output/console.log", stages.first.jobs.first.console_log_url
|
62
62
|
assert_equal "http://localhost:8153/go/files/defaultPipeline/1/Acceptance/1/Test/cruise-output/console.log", stages.last.jobs.first.console_log_url
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: go_cd_feed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-07-
|
15
|
+
date: 2014-07-13 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: webmock
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- lib/go_api_client/atom/feed_page.rb
|
125
125
|
- lib/go_api_client/commit.rb
|
126
126
|
- lib/go_api_client/dependency_material.rb
|
127
|
+
- lib/go_api_client/git_material.rb
|
127
128
|
- lib/go_api_client/helpers.rb
|
128
129
|
- lib/go_api_client/helpers/simple_attribute_support.rb
|
129
130
|
- lib/go_api_client/http_fetcher.rb
|
@@ -194,6 +195,7 @@ files:
|
|
194
195
|
- test/go_api_client/building_test.rb
|
195
196
|
- test/go_api_client/commit_test.rb
|
196
197
|
- test/go_api_client/dependency_material_test.rb
|
198
|
+
- test/go_api_client/git_material_test.rb
|
197
199
|
- test/go_api_client/job_test.rb
|
198
200
|
- test/go_api_client/pipeline_test.rb
|
199
201
|
- test/go_api_client/stage_test.rb
|
@@ -283,6 +285,7 @@ test_files:
|
|
283
285
|
- test/go_api_client/building_test.rb
|
284
286
|
- test/go_api_client/commit_test.rb
|
285
287
|
- test/go_api_client/dependency_material_test.rb
|
288
|
+
- test/go_api_client/git_material_test.rb
|
286
289
|
- test/go_api_client/job_test.rb
|
287
290
|
- test/go_api_client/pipeline_test.rb
|
288
291
|
- test/go_api_client/stage_test.rb
|