heroku_deployer 0.7.11 → 0.7.13

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 984d7cbc5fde7f4340daaa9f049072b721c9e2c7
4
- data.tar.gz: 9477d80aedeb32654ae09c9b57bacb69093cd559
3
+ metadata.gz: 913df55faa73f62f743bd022ae4e7a2bff0b80f0
4
+ data.tar.gz: ca9e00e1fefac6ade5dcec3bef5a1aa792e4df6b
5
5
  SHA512:
6
- metadata.gz: 2f04ca2c0c3e250b8542a0ec04524bb5add5b27a86eb972f23e0acc79ba54aef2cec9475caecf1ae3e3c8db1beb272648704da53b498f761a01b99b28bbaca73
7
- data.tar.gz: 11d2338360486ce90fbd41065e6b86e398938da12abb8537c80dd5d9524097e726723096ca9ef05df269213dd7fbd9c1e0cdf878165db9b97c37000b21a27b6e
6
+ metadata.gz: 539cdb3bacf5fe8dbd45df4fa8822bc4ed42e7ce01a93b36137b2e3178bb5c358036d94d6237bfb95bb94363505ade9674b69b79091c0300be0ebb48150d709d
7
+ data.tar.gz: c5584ea06036e1d9e8437b2fd627e32843fef7ace243e1389a85405e4ad56a14f5070593bc02c9601c24813ca0fa068c0ab04939f28565246d5f0eee8b2a9cb7
@@ -11,7 +11,6 @@ module Amitree
11
11
 
12
12
  def initialize(api_key, staging_app_name, production_app_name)
13
13
  @heroku = PlatformAPI.connect(api_key)
14
- @heroku_no_cache = PlatformAPI.connect(api_key, cache: Moneta.new(:Null))
15
14
  @staging_app_name = staging_app_name
16
15
  @production_app_name = production_app_name
17
16
  @promoted_release_regexp = /Promote #{@staging_app_name} v(\d+)/
@@ -26,11 +25,11 @@ module Amitree
26
25
  end
27
26
 
28
27
  def current_production_release
29
- get_releases(@production_app_name)[-1]
28
+ get_releases(@production_app_name).to_a.last
30
29
  end
31
30
 
32
31
  def last_promoted_production_release
33
- get_releases(@production_app_name).reverse.detect{|release| promoted_from_staging?(release)} or raise Error.new "Can't find a production release that was promoted from staging!"
32
+ get_releases(@production_app_name).to_a.reverse.detect{|release| promoted_from_staging?(release)} or raise Error.new "Can't find a production release that was promoted from staging!"
34
33
  end
35
34
 
36
35
  def staging_release_version(production_release)
@@ -46,7 +45,7 @@ module Amitree
46
45
 
47
46
  def staging_releases_since(production_release)
48
47
  staging_release_version = self.staging_release_version(production_release)
49
- staging_releases = get_releases(@staging_app_name)
48
+ staging_releases = get_releases(@staging_app_name).to_a
50
49
  index = staging_releases.index { |release| release['version'] == staging_release_version }
51
50
  if index.nil?
52
51
  raise Error.new "Could not find staging release #{staging_release_version}"
@@ -92,9 +91,7 @@ module Amitree
92
91
 
93
92
  private
94
93
  def get_releases(app_name)
95
- # Use our own cache because of https://github.com/heroku/platform-api/issues/16
96
- @release_cache ||= {}
97
- @release_cache[app_name] ||= @heroku_no_cache.release.list(app_name).to_a
94
+ @heroku.release.list(app_name)
98
95
  end
99
96
 
100
97
  def heroku_run(app_name, command)
@@ -54,32 +54,39 @@ module Amitree
54
54
  all_stories = Hash[result.stories.map{|story| [story.id, story]}]
55
55
 
56
56
  staging_releases.reverse.each do |staging_release|
57
- staging_commit = @heroku.get_staging_commit(staging_release)
58
- stories = all_stories.values_at(*@git.stories_worked_on_between(prod_commit, staging_commit)).compact
59
- story_ids = stories.map(&:id)
57
+ begin
58
+ staging_commit = @heroku.get_staging_commit(staging_release)
60
59
 
61
- puts "- Trying staging release #{@heroku.version(staging_release)} with commit #{staging_commit}" if options[:verbose]
62
- puts " - Stories: #{story_ids.inspect}" if options[:verbose]
60
+ puts "- Trying staging release #{@heroku.version(staging_release)} with commit #{staging_commit}" if options[:verbose]
63
61
 
64
- unaccepted_story_ids = story_ids.select { |story_id| get_tracker_status(story_id) != 'accepted' }
62
+ stories = all_stories.values_at(*@git.stories_worked_on_between(prod_commit, staging_commit)).compact
63
+ story_ids = stories.map(&:id)
65
64
 
66
- if unaccepted_story_ids.length > 0
67
- stories.each do |story|
68
- story.blocked_by = unaccepted_story_ids
69
- end
70
- puts " - Some stories are not yet accepted: #{unaccepted_story_ids.inspect}" if options[:verbose]
71
- else
72
- story_ids_referenced_later = story_ids & @git.stories_worked_on_between(staging_commit, 'HEAD')
73
- if story_ids_referenced_later.length > 0
74
- puts " - Some stories have been worked on in a later commit: #{story_ids_referenced_later}" if options[:verbose]
75
- else
65
+ puts " - Stories: #{story_ids.inspect}" if options[:verbose]
66
+
67
+ unaccepted_story_ids = story_ids.select { |story_id| get_tracker_status(story_id) != 'accepted' }
68
+
69
+ if unaccepted_story_ids.length > 0
76
70
  stories.each do |story|
77
71
  story.blocked_by = unaccepted_story_ids
78
72
  end
79
- puts " - This release is good to go!" if options[:verbose]
80
- result.staging_release_to_deploy = staging_release
81
- break
73
+ puts " - Some stories are not yet accepted: #{unaccepted_story_ids.inspect}" if options[:verbose]
74
+ else
75
+ story_ids_referenced_later = story_ids & @git.stories_worked_on_between(staging_commit, 'HEAD')
76
+ if story_ids_referenced_later.length > 0
77
+ puts " - Some stories have been worked on in a later commit: #{story_ids_referenced_later}" if options[:verbose]
78
+ else
79
+ stories.each do |story|
80
+ story.blocked_by = unaccepted_story_ids
81
+ end
82
+ puts " - This release is good to go!" if options[:verbose]
83
+ result.staging_release_to_deploy = staging_release
84
+ break
85
+ end
82
86
  end
87
+ rescue => error
88
+ puts " - Skipping candidate staging release because an error was encountered"
89
+ puts "\n#{error.class} (#{error.message}):\n " + error.backtrace.join("\n ") + "\n"
83
90
  end
84
91
  end
85
92
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_deployer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.11
4
+ version: 0.7.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Wargnier
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-08 00:00:00.000000000 Z
12
+ date: 2016-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec