last_green_go_pipeline 1.1.4 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6286a4e98df356ca29cc4f976b32e3ca714f354c
4
- data.tar.gz: cfcfdc2060e8eeac4f6fa15e1dbdb246ff7821ea
3
+ metadata.gz: 3d8f6092b30076f8d0374433c945e07fcea0bc12
4
+ data.tar.gz: 9a238cfad0e42dfadf7427806fd42aace6af7f59
5
5
  SHA512:
6
- metadata.gz: a76ba09cb48babb40e44651325e0471a5b45a1a1f9c7d03d314b7b098dd2a6f28d808a97575837fb96e04bcc8e2f9dbfd927d26e57b55cb1e1351e925a5d0e62
7
- data.tar.gz: c8122ea4efefa3af712f2edeb65c388d16d59fd3e92d176f1dc0d19cd4ae63564ff4ce87660d1bf49b4aa897dd168143d768bf281c47fc09d2a79cd8df70e2de
6
+ metadata.gz: a73e3191a24e8f3f884886d32c709c66200befcb8e0535dae4b83c630fd6fd33eb9a1c560e78463a088815c157e6af73aafd464d65f3b086f2f735d9f861540d
7
+ data.tar.gz: cedce87165e764adb9c39bcd42a5f5bb3fafc3265e2576712560183abcac786dd16916eaea85f65dbda86a614d2e51c5947dffb2db3caaaa797a3e9e89f616be
@@ -3,7 +3,7 @@ Bundler.setup
3
3
  require 'go_api_client'
4
4
  require 'pstore'
5
5
  require 'benchmark'
6
- require_relative 'green_build'
6
+ require_relative 'stage_run'
7
7
 
8
8
  module GoCD
9
9
  class LastGreenBuildFetcher
@@ -21,7 +21,7 @@ module GoCD
21
21
  end
22
22
  end
23
23
 
24
- def fetch
24
+ def fetch(filters={})
25
25
  feed = nil
26
26
  ms = Benchmark.realtime do
27
27
  feed = GoApiClient.runs(@options)
@@ -29,22 +29,31 @@ module GoCD
29
29
  puts "fetched pipeline runs in #{ms/1000}sec" unless ENV['QUIET']
30
30
 
31
31
  pipelines = feed[:pipelines]
32
- remember(:latest_atom_entry_id, feed[:latest_atom_entry_id])
33
32
  puts "Checking for last green run of #{@stage}. Latest event: #{feed[:latest_atom_entry_id]}" unless ENV['QUIET']
34
33
 
34
+ find_green_stage(pipelines: pipelines, filters: filters).tap do |stage|
35
+ remember(:last_green_build, StageRun.new(stage)) if stage
36
+ end
37
+
38
+ remember(:latest_atom_entry_id, feed[:latest_atom_entry_id])
39
+ recall :last_green_build
40
+ end
41
+
42
+ private
43
+
44
+ def find_green_stage(params)
45
+ pipelines = params.delete(:pipelines)
46
+ filter = params.delete(:filters)
35
47
  pipelines.reverse.each do |pipeline|
36
48
  stage = pipeline.stages.find { |stage| stage.name == @stage }
37
49
  if stage && stage.result == 'Passed'
38
50
  stage.pipeline = pipeline
39
- return remember(:last_green_build, GreenBuild.new(stage))
51
+ return stage
40
52
  end
41
53
  end
42
-
43
- recall :last_green_build
54
+ return nil
44
55
  end
45
56
 
46
- private
47
-
48
57
  def remember(key, value)
49
58
  @cache.transaction do
50
59
  if @cache[@pipeline]
@@ -1,11 +1,12 @@
1
1
  module GoCD
2
2
 
3
- class GreenBuild
3
+ class StageRun
4
4
 
5
- attr_reader :completed_at, :materials, :dependencies, :instance, :pipeline_name, :pipeline_counter
5
+ attr_reader :completed_at, :materials, :dependencies, :instance, :pipeline_name, :pipeline_counter, :result
6
6
 
7
7
  def initialize(stage)
8
8
  @completed_at = stage.completed_at
9
+ @result = stage.result
9
10
  @materials = stage.pipeline.materials
10
11
  @dependencies = stage.pipeline.dependencies
11
12
  @pipeline_name = stage.pipeline.name
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: last_green_go_pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bill DePhillips
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-15 00:00:00.000000000 Z
11
+ date: 2014-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -47,7 +47,7 @@ extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
49
  - lib/go_cd/last_green_build_fetcher.rb
50
- - lib/go_cd/green_build.rb
50
+ - lib/go_cd/stage_run.rb
51
51
  - LICENSE
52
52
  - README.md
53
53
  homepage: https://github.com/rearadmiral/last_green_go_pipeline