gocd 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/lib/gocd.rb +2 -27
- data/lib/gocd/config/credentials.rb +20 -0
- data/lib/gocd/config/server.rb +17 -0
- data/lib/gocd/exception/data_fetch_exception.rb +2 -0
- data/lib/gocd/pipeline/pipeline.rb +27 -0
- data/lib/gocd/pipeline/pipeline_repository.rb +20 -0
- data/lib/gocd/pipelines.rb +29 -0
- data/lib/gocd/version.rb +1 -1
- metadata +8 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73f02afa4f1563b4fc200676645ab8047153b75e
|
4
|
+
data.tar.gz: 7d25be9fbfe3c95a416512843dc5bed296da824d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50d506196fffd2f73f7fd2dfe4e82850dc0281655368ce473b9c2bbebd92d01786a4ebcde9f7da90fc0520968f83d782132c017cf790d32522dee4b0c72b137a
|
7
|
+
data.tar.gz: bdca6eb4b5c49d67b6e09be596dbc05393d0ae5943eb424c179be0ff3105d6986fdbbf681fc64a902a5da2524d7783f2bbf3f8716c94aa894975dfce30783cab
|
data/.gitignore
ADDED
data/lib/gocd.rb
CHANGED
@@ -1,27 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module GOCD
|
4
|
-
module PipelineStatus
|
5
|
-
class BuildInformer
|
6
|
-
def initialize(gocd_url)
|
7
|
-
@pipeline_statuses ||= Hash.from_xml(`curl -s #{gocd_url}/go/cctray.xml`)
|
8
|
-
end
|
9
|
-
|
10
|
-
def information_available?
|
11
|
-
!@pipeline_statuses.nil?
|
12
|
-
end
|
13
|
-
|
14
|
-
def red_pipelines
|
15
|
-
pipelines.select { |stage| stage['lastBuildStatus'] == 'Failure' }
|
16
|
-
end
|
17
|
-
|
18
|
-
def status
|
19
|
-
pipelines
|
20
|
-
end
|
21
|
-
|
22
|
-
def pipelines
|
23
|
-
@pipeline_statuses['Projects']['Project']
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
1
|
+
project_root = File.dirname(File.absolute_path(__FILE__))
|
2
|
+
Dir.glob(project_root + '/gocd/**/*.rb', &method(:require))
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module GOCD
|
2
|
+
class Credentials
|
3
|
+
def initialize(username, password)
|
4
|
+
@username = username
|
5
|
+
@password = password
|
6
|
+
end
|
7
|
+
|
8
|
+
def curl_credentials
|
9
|
+
"#{@username}:#{@password}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.credentials=(credentials)
|
14
|
+
@credentials = credentials
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.credentials
|
18
|
+
@credentials
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module GOCD
|
2
|
+
class Pipeline
|
3
|
+
def initialize(pipeline)
|
4
|
+
@pipeline = pipeline
|
5
|
+
end
|
6
|
+
|
7
|
+
def name
|
8
|
+
@pipeline['name']
|
9
|
+
end
|
10
|
+
|
11
|
+
def last_build_status
|
12
|
+
@pipeline['lastBuildStatus']
|
13
|
+
end
|
14
|
+
|
15
|
+
def status
|
16
|
+
{pipeline: name, status: last_build_status}
|
17
|
+
end
|
18
|
+
|
19
|
+
def red?
|
20
|
+
@pipeline['lastBuildStatus'] == 'Failure'
|
21
|
+
end
|
22
|
+
|
23
|
+
def green?
|
24
|
+
@pipeline['lastBuildStatus'] == 'Success'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'active_support/core_ext/hash/conversions'
|
2
|
+
|
3
|
+
module GOCD
|
4
|
+
class PipelineRepository
|
5
|
+
def self.pipelines
|
6
|
+
@pipelines ||= fetch_data
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
def self.fetch_data
|
11
|
+
raw_pipelines = Hash.from_xml(`curl -s -k -u #{GOCD.credentials.curl_credentials} #{GOCD.server.url}/go/cctray.xml`)
|
12
|
+
to_pipelines raw_pipelines
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.to_pipelines(raw_pipelines)
|
16
|
+
raise GOCDDataFetchException, 'Could not fetch data from server!!' if raw_pipelines.nil?
|
17
|
+
raw_pipelines['Projects']['Project'].map { |raw_pipeline| GOCD::Pipeline.new raw_pipeline }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module GOCD
|
2
|
+
class AllPipelines
|
3
|
+
class << self
|
4
|
+
def information_available?
|
5
|
+
!pipelines.nil?
|
6
|
+
end
|
7
|
+
|
8
|
+
def red_pipelines
|
9
|
+
pipelines.select { |pipeline| pipeline.red? }
|
10
|
+
end
|
11
|
+
|
12
|
+
def green_pipelines
|
13
|
+
pipelines.select { |pipeline| pipeline.green? }
|
14
|
+
end
|
15
|
+
|
16
|
+
def status
|
17
|
+
pipelines.map { |pipeline| pipeline.status }
|
18
|
+
end
|
19
|
+
|
20
|
+
def any_red?
|
21
|
+
!red_pipelines.empty?
|
22
|
+
end
|
23
|
+
|
24
|
+
def pipelines
|
25
|
+
GOCD::PipelineRepository.pipelines
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/gocd/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gocd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ajit Singh
|
@@ -16,10 +16,17 @@ executables: []
|
|
16
16
|
extensions: []
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
|
+
- ".gitignore"
|
19
20
|
- Gemfile
|
20
21
|
- Gemfile.lock
|
21
22
|
- gocd.gemspec
|
22
23
|
- lib/gocd.rb
|
24
|
+
- lib/gocd/config/credentials.rb
|
25
|
+
- lib/gocd/config/server.rb
|
26
|
+
- lib/gocd/exception/data_fetch_exception.rb
|
27
|
+
- lib/gocd/pipeline/pipeline.rb
|
28
|
+
- lib/gocd/pipeline/pipeline_repository.rb
|
29
|
+
- lib/gocd/pipelines.rb
|
23
30
|
- lib/gocd/version.rb
|
24
31
|
homepage: https://github.com/ajitsing/gocd.git
|
25
32
|
licenses:
|