chicanery 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.
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ repos
1
2
  *.gem
2
3
  *.rbc
3
4
  *.example
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - "1.9.2"
4
- - "1.9.3"
4
+ - "1.9.3"
5
+ script: bundle exec rake COVERAGE=true
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'simplecov'
3
4
  # Specify your gem's dependencies in chicanery.gemspec
4
5
  gemspec
data/Gemfile.lock CHANGED
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chicanery (0.0.4)
4
+ chicanery (0.0.5)
5
5
  nokogiri (~> 1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  diff-lcs (1.1.3)
11
+ multi_json (1.3.7)
11
12
  nokogiri (1.5.5)
12
13
  rake (0.9.2.2)
13
14
  rspec (2.11.0)
@@ -18,6 +19,12 @@ GEM
18
19
  rspec-expectations (2.11.3)
19
20
  diff-lcs (~> 1.1.3)
20
21
  rspec-mocks (2.11.3)
22
+ simplecov (0.7.1)
23
+ multi_json (~> 1.0)
24
+ simplecov-html (~> 0.7.1)
25
+ simplecov-gem-adapter (1.0.1)
26
+ simplecov
27
+ simplecov-html (0.7.1)
21
28
 
22
29
  PLATFORMS
23
30
  ruby
@@ -26,3 +33,5 @@ DEPENDENCIES
26
33
  chicanery!
27
34
  rake (~> 0)
28
35
  rspec (~> 2)
36
+ simplecov
37
+ simplecov-gem-adapter
data/README.md CHANGED
@@ -17,9 +17,23 @@ State is persisted between executions so that it be scheduled to run regularly w
17
17
  Create a configuration file. This file is just a ruby file that can make use of a few configuration and callback methods:
18
18
 
19
19
  require 'chicanery/cctray'
20
+ require 'chicanery/git'
20
21
 
22
+ include Chicanery::Git
23
+
24
+ git_repo 'chicanery', '/tmp/chicanery', remotes: {
25
+ github: { url: 'git://github.com/markryall/chicanery.git' }
26
+ }
21
27
  server Chicanery::Cctray.new 'tddium', 'https://cihost.com/cctray.xml'
22
28
 
29
+ when_run do |state|
30
+ puts 'checked state'
31
+ end
32
+
33
+ when_commit do |repo, commit, previous|
34
+ puts "commit #{previous}..#{commit} detected in repo #{repo}"
35
+ end
36
+
23
37
  when_succeeded do |job_name, job|
24
38
  puts "#{job_name} has succeeded"
25
39
  end
@@ -66,7 +80,6 @@ Basic authentication is supported by passing :user => 'user', :password => 'pass
66
80
 
67
81
  ## Plans for world domination
68
82
 
69
- * monitoring a git repository for push notifications
70
83
  * monitoring a mercurial repository for push notifications
71
84
  * monitoring a subversion repository for commit notifications
72
85
  * monitoring heroku for deployment event notification
data/bin/chicanery CHANGED
@@ -4,4 +4,4 @@ $:.unshift File.dirname(__FILE__)+'/../lib'
4
4
 
5
5
  require 'chicanery'
6
6
  extend Chicanery
7
- execute *ARGV
7
+ execute ARGV
data/chicanery.gemspec CHANGED
@@ -21,4 +21,6 @@ Gem::Specification.new do |gem|
21
21
 
22
22
  gem.add_development_dependency 'rake', '~>0'
23
23
  gem.add_development_dependency 'rspec', '~>2'
24
- end
24
+ gem.add_development_dependency 'simplecov'
25
+ gem.add_development_dependency 'simplecov-gem-adapter'
26
+ end
data/examples/evil.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'chicanery/git'
2
+
3
+ include Chicanery::Git
4
+
5
+ git_repo 'chicanery', '.', branches: [:master]
6
+
7
+ start = Time.now.to_i
8
+ maximum = ARGV.shift.to_i
9
+
10
+ puts "Uncommitted changes will be automatically reverted after #{maximum} seconds"
11
+
12
+ when_run do |state|
13
+ elapsed = Time.now.to_i - start
14
+ if elapsed >= maximum
15
+ puts "no commits detected in #{elapsed} seconds - reverting all uncommitted changes"
16
+ `git reset --hard`
17
+ start = Time.now.to_i
18
+ end
19
+ end
20
+
21
+ when_commit do |branch, commit, previous|
22
+ puts "commit detected - resetting timer"
23
+ start = Time.now.to_i
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'chicanery/git'
2
+
3
+ include Chicanery::Git
4
+
5
+ git_repo 'chicanery', '.', branches: [:master], remotes: {
6
+ github: { url: 'git://github.com/markryall/chicanery.git' }
7
+ }
8
+
9
+ when_commit do |branch, commit, previous|
10
+ puts "commit #{previous}..#{commit} detected in #{branch}"
11
+ end
data/examples/travis.rb CHANGED
@@ -1,26 +1,41 @@
1
1
  require 'chicanery/cctray'
2
+ require 'chicanery/git'
3
+
4
+ include Chicanery::Git
5
+
6
+ git_repo 'chicanery', '.', remotes: {
7
+ github: { url: 'git://github.com/markryall/chicanery.git' }
8
+ }
2
9
 
3
10
  server Chicanery::Cctray.new 'travis', 'https://api.travis-ci.org/repositories/markryall/chicanery/cc.xml'
4
11
 
12
+ def growlnotify message
13
+ `growlnotify -t "some new chicanery ..." --image ~/icons/chicanery.png -m \"#{message}\"`
14
+ end
15
+
16
+ when_commit do |repo, commit, previous|
17
+ growlnotify "commit #{previous}..#{commit} detected in repo #{repo}"
18
+ end
19
+
5
20
  when_started do |job_name, job|
6
- `afplay ~/build_sounds/startup.mp3`
7
- puts "job #{job_name} has started"
21
+ growlnotify "job #{job_name} has started"
22
+ `afplay ~/build_sounds/ticktock.mp3`
8
23
  end
9
24
 
10
25
  when_succeeded do |job_name, job|
11
- puts "job #{job_name} #{job[:last_label]} has succeeded"
26
+ growlnotify "job #{job_name} #{job[:last_label]} has succeeded"
12
27
  end
13
28
 
14
29
  when_failed do |job_name, job|
15
- puts "job #{job_name} #{job[:last_label]} has failed"
30
+ growlnotify "job #{job_name} #{job[:last_label]} has failed"
16
31
  end
17
32
 
18
33
  when_broken do |job_name, job|
34
+ growlnotify "job #{job_name} is broken"
19
35
  `afplay ~/build_sounds/ambulance.mp3`
20
- puts "job #{job_name} is broken"
21
36
  end
22
37
 
23
38
  when_fixed do |job_name, job|
39
+ growlnotify "job #{job_name} is fixed"
24
40
  `afplay ~/build_sounds/applause.mp3`
25
- puts "job #{job_name} is fixed"
26
41
  end
data/lib/chicanery.rb CHANGED
@@ -1,33 +1,48 @@
1
+ if ENV['COVERAGE']
2
+ require 'simplecov'
3
+ require 'simplecov-gem-adapter'
4
+ SimpleCov.start 'gem'
5
+ end
6
+
1
7
  require 'chicanery/persistence'
2
- require 'chicanery/servers'
8
+ require 'chicanery/collections'
3
9
  require 'chicanery/handlers'
4
10
  require 'chicanery/state_comparison'
5
11
 
6
12
  module Chicanery
7
13
  include Persistence
8
- include Servers
14
+ include Collections
9
15
  include Handlers
10
16
  include StateComparison
11
17
 
12
- VERSION = "0.0.4"
18
+ VERSION = "0.0.5"
13
19
 
14
- def execute *args
15
- load args.shift
16
- poll_period = args.shift
17
- loop do
18
- previous_state = restore
19
- current_state = {
20
- servers: {}
21
- }
22
- servers.each do |server|
23
- current_jobs = server.jobs
24
- compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
25
- current_state[:servers][server.name] = current_jobs
20
+ def execute args
21
+ begin
22
+ load args.shift
23
+ poll_period = args.shift
24
+ loop do
25
+ previous_state = restore
26
+ current_state = {
27
+ servers: {},
28
+ repos: {}
29
+ }
30
+ repos.each do |repo|
31
+ repo_state = repo.state
32
+ compare_repo_state repo.name, repo_state, previous_state[:repos][repo.name] if previous_state[:repos]
33
+ current_state[:repos][repo.name] = repo_state
34
+ end
35
+ servers.each do |server|
36
+ current_jobs = server.jobs
37
+ compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
38
+ current_state[:servers][server.name] = current_jobs
39
+ end
40
+ run_handlers.each {|handler| handler.call current_state }
41
+ persist current_state
42
+ break unless poll_period
43
+ sleep poll_period.to_i
26
44
  end
27
- run_handlers.each {|handler| handler.call current_state }
28
- persist current_state
29
- break unless poll_period
30
- sleep poll_period.to_i
45
+ rescue Interrupt
31
46
  end
32
47
  end
33
48
  end
@@ -0,0 +1,15 @@
1
+ module Chicanery
2
+ module Collections
3
+ %w{server repo}.each do |entity|
4
+ class_eval <<-EOF
5
+ def #{entity} entity
6
+ #{entity}s << entity
7
+ end
8
+
9
+ def #{entity}s
10
+ @#{entity}s ||= []
11
+ end
12
+ EOF
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,58 @@
1
+ require 'fileutils'
2
+
3
+ module Chicanery
4
+ module Git
5
+ class Repo
6
+ include FileUtils
7
+
8
+ attr_reader :name, :path, :branches, :remotes
9
+
10
+ def initialize name, path, params={}
11
+ @name, @path = name, path
12
+ @branches = params[:branches] || []
13
+ @remotes = params[:remotes] || {}
14
+ end
15
+
16
+ def in_repo
17
+ Dir.chdir(path) { yield }
18
+ end
19
+
20
+ def prepare
21
+ return if File.exists? path
22
+ mkdir_p path
23
+ in_repo { git 'init' }
24
+ end
25
+
26
+ def state
27
+ prepare
28
+ response = {}
29
+ in_repo do
30
+ remotes.each do |name, remote|
31
+ git "remote add #{name} #{remote[:url]}" unless git("remote | grep #{name}") == name.to_s
32
+ git "fetch -q #{name}"
33
+ (remote[:branches] || ['master']).each do |branch|
34
+ response["#{name}/#{branch}"] = head "#{name}/#{branch}"
35
+ end
36
+ end
37
+ branches.each do |branch|
38
+ response[branch] = head branch
39
+ end
40
+ end
41
+ response
42
+ end
43
+
44
+ def head branch
45
+ match = /^([^ ]*) /.match git "log -n 1 #{branch} --pretty=oneline"
46
+ match[1] if match
47
+ end
48
+
49
+ def git command
50
+ `git #{command}`.chomp
51
+ end
52
+ end
53
+
54
+ def git_repo *args
55
+ repo Repo.new *args
56
+ end
57
+ end
58
+ end
@@ -1,6 +1,6 @@
1
1
  module Chicanery
2
2
  module Handlers
3
- %w{run started succeeded failed broken fixed}.each do |status|
3
+ %w{run started succeeded failed broken fixed commit}.each do |status|
4
4
  class_eval <<-EOF
5
5
  def when_#{status} &block
6
6
  #{status}_handlers << block
@@ -8,15 +8,22 @@ module Chicanery
8
8
  end
9
9
 
10
10
  def compare_job name, current, previous
11
- return unless current[:last_build_time] != previous[:last_build_time]
12
11
  if current[:activity] == :building and previous[:activity] == :sleeping
13
12
  notify_started_handlers name, current
14
- return
15
13
  end
14
+ return unless current[:last_build_time] != previous[:last_build_time]
16
15
  notify_succeeded_handlers name, current if current[:last_build_status] == :success
17
16
  notify_failed_handlers name, current if current[:last_build_status] == :failure
18
17
  notify_broken_handlers name, current if current[:last_build_status] == :failure and previous[:last_build_status] == :success
19
18
  notify_fixed_handlers name, current if current[:last_build_status] == :success and previous[:last_build_status] == :failure
20
19
  end
20
+
21
+ def compare_repo_state name, current, previous
22
+ return unless previous
23
+ current.each do |branch, state|
24
+ next unless previous[branch]
25
+ notify_commit_handlers "#{name}/#{branch}", state, previous[branch] if state != previous[branch]
26
+ end
27
+ end
21
28
  end
22
29
  end
@@ -0,0 +1,14 @@
1
+ describe Chicanery::Collections do
2
+ include Chicanery::Collections
3
+
4
+ %w{server repo}.each do |entity|
5
+ it "should default to an empty list of #{entity}s" do
6
+ send("#{entity}s").should == []
7
+ end
8
+
9
+ it "should append to #{entity}s list" do
10
+ send entity, :entity
11
+ send("#{entity}s").should == [:entity]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ describe Chicanery::Persistence do
2
+ include Chicanery::Persistence
3
+
4
+ describe '#persist' do
5
+ it 'should write state to disk as yaml' do
6
+ file = stub 'file'
7
+ state = stub 'state', to_yaml: :yaml
8
+ File.should_receive(:open).with('state', 'w').and_yield file
9
+ file.should_receive(:puts).with :yaml
10
+ persist state
11
+ end
12
+ end
13
+
14
+ describe '#restore' do
15
+ it 'should return empty hash if state file does not exist' do
16
+ File.should_receive(:exist?).with('state').and_return false
17
+ restore.should == {}
18
+ end
19
+
20
+ it 'should read yaml from disk' do
21
+ state = stub 'state'
22
+ File.should_receive(:exist?).with('state').and_return true
23
+ YAML.should_receive(:load_file).with('state').and_return state
24
+ restore.should == state
25
+ end
26
+ end
27
+ end
@@ -1,20 +1,63 @@
1
- require 'chicanery/state_comparison'
2
-
3
1
  describe Chicanery::StateComparison do
4
2
  include Chicanery::StateComparison
5
3
 
6
- let(:current_jobs) { {} }
7
- let(:previous_jobs) { {} }
4
+ describe '#compare_jobs' do
5
+ let(:current_jobs) { {} }
6
+ let(:previous_jobs) { {} }
7
+
8
+ after { compare_jobs current_jobs, previous_jobs }
9
+
10
+ it 'should do nothing when there are no jobs in current state' do
11
+ should_not_receive :compare_job
12
+ previous_jobs[:job] = {}
13
+ end
8
14
 
9
- it 'should do nothing when there are no jobs in current state' do
10
- should_not_receive :compare_job
11
- previous_jobs[:job] = {}
12
- compare_jobs current_jobs, previous_jobs
15
+ it 'should do nothing when there is no previous state' do
16
+ should_not_receive :compare_job
17
+ current_jobs[:job] = {}
18
+ end
13
19
  end
14
20
 
15
- it 'should do nothing when there is no previous state' do
16
- should_not_receive :compare_job
17
- current_jobs[:job] = {}
18
- compare_jobs current_jobs, previous_jobs
21
+ describe '#compare_job' do
22
+ let(:current_job) { { activity: :sleeping, last_build_time: Time.now, } }
23
+ let(:previous_job) { { activity: :sleeping, last_build_time: (Time.now-1) } }
24
+
25
+ before {
26
+ stub! :notify_failed_handlers
27
+ stub! :notify_succeeded_handlers
28
+ }
29
+
30
+ after { compare_job 'name', current_job, previous_job }
31
+
32
+ it 'should do nothing when build times are equal' do
33
+ current_job[:last_build_time] = previous_job[:last_build_time] = Time.now
34
+ end
35
+
36
+ it 'should notify started handlers when activity changes to building' do
37
+ current_job[:activity] = :building
38
+ should_receive(:notify_started_handlers).with 'name', current_job
39
+ end
40
+
41
+ it 'should notify succeeded handlers when a build is successful' do
42
+ current_job[:last_build_status] = :success
43
+ should_receive(:notify_succeeded_handlers).with 'name', current_job
44
+ end
45
+
46
+ it 'should notify failed handlers when a build fails' do
47
+ current_job[:last_build_status] = :failure
48
+ should_receive(:notify_failed_handlers).with 'name', current_job
49
+ end
50
+
51
+ it 'should notify broken handlers when a build is broken' do
52
+ previous_job[:last_build_status] = :success
53
+ current_job[:last_build_status] = :failure
54
+ should_receive(:notify_broken_handlers).with 'name', current_job
55
+ end
56
+
57
+ it 'should notify fixed handlers when a build is fixed' do
58
+ previous_job[:last_build_status] = :failure
59
+ current_job[:last_build_status] = :success
60
+ should_receive(:notify_fixed_handlers).with 'name', current_job
61
+ end
19
62
  end
20
63
  end
@@ -1,12 +1,30 @@
1
- require 'chicanery'
2
-
3
1
  describe Chicanery do
4
2
  include Chicanery
5
3
 
6
4
  describe '#execute' do
5
+ before { %w{load restore persist}.each {|m| stub! m } }
6
+
7
7
  it 'should load configuration and exit immediately when nothing is configured no poll period is provided' do
8
8
  should_receive(:load).with 'configuration'
9
- execute 'configuration'
9
+ execute %w{configuration}
10
+ end
11
+
12
+ it 'should restore previous state' do
13
+ should_receive(:restore)
14
+ execute %w{configuration}
15
+ end
16
+
17
+ it 'should persist new state' do
18
+ should_receive(:persist).with({
19
+ servers: {},
20
+ repos: {}
21
+ })
22
+ execute %w{configuration}
23
+ end
24
+
25
+ it 'should sleep for specified time when poll period is provided' do
26
+ should_receive(:sleep).with(10).and_raise Interrupt
27
+ execute %w{configuration 10}
10
28
  end
11
29
  end
12
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chicanery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-18 00:00:00.000000000 Z
12
+ date: 2012-12-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -59,6 +59,38 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2'
62
+ - !ruby/object:Gem::Dependency
63
+ name: simplecov
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: simplecov-gem-adapter
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  description: trigger various events related to a continuous integration environment
63
95
  email:
64
96
  - mark@ryall.name
@@ -76,15 +108,18 @@ files:
76
108
  - Rakefile
77
109
  - bin/chicanery
78
110
  - chicanery.gemspec
111
+ - examples/evil.rb
112
+ - examples/github.rb
79
113
  - examples/travis.rb
80
114
  - lib/chicanery.rb
81
115
  - lib/chicanery/cctray.rb
116
+ - lib/chicanery/collections.rb
117
+ - lib/chicanery/git.rb
82
118
  - lib/chicanery/handlers.rb
83
119
  - lib/chicanery/persistence.rb
84
- - lib/chicanery/servers.rb
85
120
  - lib/chicanery/state_comparison.rb
86
- - spec/broken.xml
87
- - spec/building.xml
121
+ - spec/chicanery/collections_spec.rb
122
+ - spec/chicanery/persistence_spec.rb
88
123
  - spec/chicanery/state_comparison_spec.rb
89
124
  - spec/chicanery_spec.rb
90
125
  homepage: http://github.com/markryall/chicanery
@@ -101,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
136
  version: '0'
102
137
  segments:
103
138
  - 0
104
- hash: -3725593527818179587
139
+ hash: -2101217152092119930
105
140
  required_rubygems_version: !ruby/object:Gem::Requirement
106
141
  none: false
107
142
  requirements:
@@ -110,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
145
  version: '0'
111
146
  segments:
112
147
  - 0
113
- hash: -3725593527818179587
148
+ hash: -2101217152092119930
114
149
  requirements: []
115
150
  rubyforge_project:
116
151
  rubygems_version: 1.8.23
@@ -118,7 +153,7 @@ signing_key:
118
153
  specification_version: 3
119
154
  summary: polls various resources related to a ci environment and performs custom notifications
120
155
  test_files:
121
- - spec/broken.xml
122
- - spec/building.xml
156
+ - spec/chicanery/collections_spec.rb
157
+ - spec/chicanery/persistence_spec.rb
123
158
  - spec/chicanery/state_comparison_spec.rb
124
159
  - spec/chicanery_spec.rb
@@ -1,11 +0,0 @@
1
- module Chicanery
2
- module Servers
3
- def server new_server
4
- servers << new_server
5
- end
6
-
7
- def servers
8
- @servers ||= []
9
- end
10
- end
11
- end
data/spec/broken.xml DELETED
@@ -1,18 +0,0 @@
1
-
2
- <?xml version="1.0" encoding="utf-8"?>
3
- <Projects>
4
- <Project name="sampleproject :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/specs/1" />
5
- <Project name="sampleproject :: specs :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/specs/1/specs" />
6
- <Project name="sampleproject :: features" activity="Sleeping" lastBuildStatus="Failure" lastBuildLabel="55" lastBuildTime="2012-11-10T13:06:00" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/features/1">
7
- <messages>
8
- <message text="build breaker &lt;buildbreaker@sampleproject.com&gt;" kind="Breakers" />
9
- </messages>
10
- </Project>
11
- <Project name="sampleproject :: features :: features" activity="Sleeping" lastBuildStatus="Failure" lastBuildLabel="55" lastBuildTime="2012-11-10T13:06:00" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/features/1/features">
12
- <messages>
13
- <message text="build breaker &lt;buildbreaker@sampleproject.com&gt;" kind="Breakers" />
14
- </messages>
15
- </Project>
16
- <Project name="sampleproject :: staging" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/51/staging/1" />
17
- <Project name="sampleproject :: staging :: deploy" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/51/staging/1/deploy" />
18
- </Projects>
data/spec/building.xml DELETED
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Projects>
3
- <Project name="sampleproject :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/specs/1" />
4
- <Project name="sampleproject :: specs :: specs" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="55" lastBuildTime="2012-11-10T12:39:46" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/specs/1/specs" />
5
- <Project name="sampleproject :: features" activity="Building" lastBuildStatus="Success" lastBuildLabel="1" lastBuildTime="2012-11-10T12:31:53" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/55/features/1" />
6
- <Project name="sampleproject :: features :: features" activity="Building" lastBuildStatus="Success" lastBuildLabel="1" lastBuildTime="2012-11-10T12:31:53" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/55/features/1/features" />
7
- <Project name="sampleproject :: staging" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/pipelines/sampleproject/51/staging/1" />
8
- <Project name="sampleproject :: staging :: deploy" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="51" lastBuildTime="2012-10-23T00:23:22" webUrl="http://192.168.1.2:8153/go/tab/build/detail/sampleproject/51/staging/1/deploy" />
9
- </Projects>