kapost_deploy 0.1.0 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 874289c8439280011dfee2c03331c8ae4d840743
4
- data.tar.gz: 26db5e6fcbaf0844b68a1dd5e6ca78fc9cc0c6ea
3
+ metadata.gz: d8a0ed543f7bb6760e3719e3be2d7281ad9bc84b
4
+ data.tar.gz: 0e78c6acf9e48f70a88f0650ba4ffaceef74aa29
5
5
  SHA512:
6
- metadata.gz: e5eee4543078317ce1e784a4665214b1881cc96cf0669d6c8d6ba84f4af6dfedc86f697fab6a925b6194d2e4443e71075aa2be8417d3afb6f04d53c24d9fccbe
7
- data.tar.gz: d21e42e8e46b8431fbb2949818157eb4cb08328b2b0c8245835ed71d294756def0e07c7bd8652b3d56f85e01d75c32486a8a84f90f98f5e835ea95a93fe676c2
6
+ metadata.gz: 084d139d05b57f77a445b0928b5ec62671ede37718df3f72c31c4d082b4ebc252437361d9dd867871835d6b86d57e9ca3f2457db71f1c900d631184ccd2abf46
7
+ data.tar.gz: 419a829ed7c06727ee931a65135e0597181435bb4736fcb01435cf7c9f05bd98d5ad9eb7fc87a6e94b329f22850a407d262aea234c981798dfb3195d90897069
@@ -12,7 +12,7 @@ module KapostDeploy
12
12
  end
13
13
 
14
14
  def self.version
15
- "0.1.0"
15
+ "0.1.1"
16
16
  end
17
17
 
18
18
  def self.version_label
@@ -0,0 +1,35 @@
1
+ require "slack-notify"
2
+
3
+ module KapostDeploy
4
+ module Plugins
5
+ module Slack
6
+ # Wrapper for slack-notify gem
7
+ class Notifier
8
+ def initialize(slack_config)
9
+ self.slack_config = slack_config
10
+ end
11
+
12
+ def notify_slack(message)
13
+ return unless configured?
14
+ slack.notify(message)
15
+ end
16
+
17
+ def identity
18
+ @identity ||= `whoami`.chomp
19
+ end
20
+
21
+ def configured?
22
+ !slack_config.nil?
23
+ end
24
+
25
+ private
26
+
27
+ def slack
28
+ @slack ||= SlackNotify::Client.new(slack_config)
29
+ end
30
+
31
+ attr_accessor :slack_config
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ require "kapost_deploy/plugins/slack/notifier"
2
+
3
+ module KapostDeploy
4
+ module Plugins
5
+ # After-promotion plugin to notify via slack after a promotion is complete with an
6
+ # optional message.
7
+ class SlackAfterPromote
8
+ def initialize(config, notifier: Slack::Notifier.new(config.fetch(:slack_config, nil)))
9
+ self.config = config
10
+ self.notifier = notifier
11
+ end
12
+
13
+ def before
14
+ end
15
+
16
+ def after
17
+ return unless notifier.configured?
18
+
19
+ addl = slack_config.fetch(:additional_message, "")
20
+ addl = "\n#{addl}" unless addl.empty?
21
+
22
+ message = "#{identity} promoted *#{config.app}* to *#{config.to.join(",")}*#{addl}"
23
+ notifier.notify(message)
24
+ end
25
+
26
+ private
27
+
28
+ attr_accessor :notifier
29
+
30
+ attr_accessor :config
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,63 @@
1
+ require "kapost_deploy/plugins/slack/notifier"
2
+ require "git"
3
+
4
+ module KapostDeploy
5
+ module Plugins
6
+ # Before-promotion plugin to notify slack with a github comparison warning
7
+ class SlackGithubDiff
8
+ def initialize(config, notifier: Slack::Notifier.new(config.fetch(:slack_config, nil)))
9
+ self.behind_app = config.to[0]
10
+ self.ahead_app = config.app
11
+ self.github_config = config.fetch(:github_config, nil)
12
+ self.notifier = notifier
13
+ end
14
+
15
+ def before
16
+ return unless configured?
17
+
18
+ count = commit_count(behind_sha1, ahead_sha1)
19
+ link = github_compare_url(behind_sha1, ahead_sha1)
20
+
21
+ notifier.notify("#{identity} is promoting #{count} commits to *#{config.to.join(",")}*: #{link}")
22
+ end
23
+
24
+ def after
25
+ end
26
+
27
+ private
28
+
29
+ def behind_sha1
30
+ @behind_sha1 ||= heroku_head_sha1(behind_app)
31
+ end
32
+
33
+ def ahead_sha1
34
+ @ahead_sha1 ||= heroku_head_sha1(ahead_app)
35
+ end
36
+
37
+ attr_accessor :notifier
38
+ attr_accessor :github_config
39
+ attr_accessor :behind_app
40
+ attr_accessor :ahead_app
41
+
42
+ def configured?
43
+ !git_config.nil? && notifier.configured?
44
+ end
45
+
46
+ def heroku_head_sha1(app)
47
+ Git.ls_remote("https://git.heroku.com/#{app}.git")["head"][:sha]
48
+ end
49
+
50
+ def commit_count(behind_sha, ahead_sha)
51
+ git.log.between(behind_sha, ahead_sha).size
52
+ end
53
+
54
+ def github_compare_url(behind_sha, ahead_sha)
55
+ "https://github.com/#{github_config[:repo]}/compare/#{behind_sha}...#{ahead_sha}"
56
+ end
57
+
58
+ def git
59
+ @git ||= Git.open(__dir__, log: Logger.new(STDOUT))
60
+ end
61
+ end
62
+ end
63
+ end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kapost_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Croft
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-28 00:00:00.000000000 Z
11
+ date: 2016-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '10.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
@@ -273,6 +273,9 @@ files:
273
273
  - README.md
274
274
  - lib/kapost_deploy.rb
275
275
  - lib/kapost_deploy/identity.rb
276
+ - lib/kapost_deploy/plugins/slack/notifier.rb
277
+ - lib/kapost_deploy/plugins/slack_after_promote.rb
278
+ - lib/kapost_deploy/plugins/slack_github_diff.rb
276
279
  - lib/kapost_deploy/task.rb
277
280
  - lib/tasks/console.rake
278
281
  - lib/tasks/rspec.rake