groundskeeper-bitcore 0.9.0 → 0.10.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
  SHA256:
3
- metadata.gz: a313973fae89b7f987fe0b7b066866b60e4e0ec54bb0d2e8d31cbf008868bfb9
4
- data.tar.gz: a6d2f72b2e810b91f7e1ba0b6121afc5ff3795601b428e5819c970e48931561f
3
+ metadata.gz: 718393692dd1c01682868a2eae64794c25f11e6189b516f88f568a0b1f173de1
4
+ data.tar.gz: 594af462795ef3b09d9610db8fbe5788096129e2c3d5676ced82174b19935aa7
5
5
  SHA512:
6
- metadata.gz: e5b84247121dfe9e4383ec835f8396508983da48afdc454792c64a8df5837dbad9d69f9a23f5f30b88cd9d04042c722d7afefe900beb64773a7ccfd6942e7575
7
- data.tar.gz: 349a4fb05d2be8b770f68f9e0e4f5ef31e666b03776615b16bd03134e326af9e1d8668b2442667e1a9074485b53c0db5a7e526defcf0990a4890b756d3a04c9c
6
+ metadata.gz: 074152a71588c99a0a30ae529e7f87955636fa20acd2eb7d988153784bb794a5d51af2d899cb2838d5069adea56f47c3bb3944584f331f1f083a3da43731b683
7
+ data.tar.gz: 91740b44c7bef4ea9b0358339e12bfa3d05aec61199ae04c41d359435dd918eb74a9f67714f27489fcc2730e15f2cd3b275f446e0a25f3be20b1095b2efe030c
data/README.md CHANGED
@@ -40,6 +40,14 @@ projects. Clone it as follows:
40
40
  git clone git@github.com:NU-CBITS/project_details.git ~/.project_details
41
41
  ```
42
42
 
43
+ To integrate with Slack, set the following environment variables:
44
+
45
+ ```bash
46
+ SLACK_WORKSPACE
47
+ SLACK_CHANNEL
48
+ SLACK_TOKEN
49
+ ```
50
+
43
51
  ## Usage
44
52
 
45
53
  To display tag/release information about a Rails project, use the `info`
@@ -13,6 +13,7 @@ require "groundskeeper/repository"
13
13
  require "groundskeeper/rubygems"
14
14
  require "groundskeeper/semantic_version"
15
15
  require "groundskeeper/sentry"
16
+ require "groundskeeper/slack"
16
17
  require "groundskeeper/ssh"
17
18
  require "groundskeeper/string_utils"
18
19
  require "groundskeeper/version"
@@ -30,6 +30,7 @@ module Groundskeeper
30
30
  project_name: project.sentry_project,
31
31
  version_prefix: repository.name
32
32
  )
33
+ slack = Slack.build
33
34
  ssh = Ssh.build(SSH_USERNAME, project.full_dns(stage))
34
35
 
35
36
  new(
@@ -41,6 +42,7 @@ module Groundskeeper
41
42
  repository: repository,
42
43
  rubygems: Rubygems,
43
44
  sentry: sentry,
45
+ slack: slack,
44
46
  ssh: ssh,
45
47
  version_file: RailsVersion.build,
46
48
  website: website
@@ -62,6 +64,7 @@ module Groundskeeper
62
64
  repository: nil,
63
65
  rubygems: nil,
64
66
  sentry: nil,
67
+ slack: nil,
65
68
  ssh: nil,
66
69
  website: nil,
67
70
  version_file:
@@ -74,6 +77,7 @@ module Groundskeeper
74
77
  @repository = repository
75
78
  @rubygems = rubygems
76
79
  @sentry = sentry
80
+ @slack = slack
77
81
  @ssh = ssh
78
82
  @website = website
79
83
  @version_file = version_file
@@ -147,6 +151,7 @@ module Groundskeeper
147
151
  return unrecognized_tag unless tag_present_in_git?(ENV[TAG])
148
152
  return missing_jira_credentials unless jira.credentials?
149
153
  return missing_sentry_credentials unless sentry.credentials?
154
+ return missing_slack_credentials unless slack.credentials?
150
155
  return unless check_groundskeeper_version
151
156
  return unable_to_ssh unless ssh.can_connect?
152
157
 
@@ -167,7 +172,8 @@ module Groundskeeper
167
172
 
168
173
  # collaborators
169
174
  attr_reader :changelog, :console, :git, :jira, :project,
170
- :repository, :rubygems, :sentry, :ssh, :version_file, :website
175
+ :repository, :rubygems, :sentry, :slack, :ssh, :version_file,
176
+ :website
171
177
  # state
172
178
  attr_reader :current_step, :did_push_to_remote, :next_version,
173
179
  :recent_commits
@@ -315,6 +321,13 @@ module Groundskeeper
315
321
  )
316
322
  end
317
323
 
324
+ def missing_slack_credentials
325
+ console.say(
326
+ "Please configure your Slack environment variables.",
327
+ :red
328
+ )
329
+ end
330
+
318
331
  def unable_to_ssh
319
332
  console.say(
320
333
  "Unable to SSH to the server, are you signed into VPN?",
@@ -349,6 +362,7 @@ module Groundskeeper
349
362
  if deployed_version == ENV[TAG]
350
363
  console.say("# deployment successful", :green)
351
364
  transition_remote_issues deployed_version
365
+ announce_in_slack deployed_version
352
366
  else
353
367
  # :nocov:
354
368
  console.say(
@@ -385,6 +399,13 @@ module Groundskeeper
385
399
  end
386
400
  # rubocop:enable Metrics/MethodLength
387
401
 
402
+ def announce_in_slack(deployed_version)
403
+ slack.send_message(
404
+ "#{project.project_name} version #{deployed_version} deployed to " +
405
+ self.class.stage
406
+ )
407
+ end
408
+
388
409
  def announce_step(message)
389
410
  console.say(">>>", :magenta)
390
411
  console.say(">>> #{@current_step}. #{message}", :magenta)
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Groundskeeper
4
+ # Posts to the RADD #general channel.
5
+ class Slack
6
+ COMMAND = "curl"
7
+ SLACK_WORKSPACE_KEY = "SLACK_WORKSPACE"
8
+ SLACK_CHANNEL_KEY = "SLACK_CHANNEL"
9
+ SLACK_TOKEN_KEY = "SLACK_TOKEN"
10
+ URL = "https://hooks.slack.com/services/" \
11
+ "%<workspace>s/%<channel>s/%<token>s"
12
+ SEND_MESSAGE = "-X POST -H 'Content-type: application/json' " \
13
+ "--data '{\"text\":\"%<message>s\"}' #{URL}"
14
+
15
+ attr_reader :slack
16
+
17
+ def self.build
18
+ new Executable.new(COMMAND)
19
+ end
20
+
21
+ def initialize(slack)
22
+ @slack = slack
23
+ end
24
+
25
+ def send_message(message)
26
+ slack.execute(format(SEND_MESSAGE,
27
+ message: message,
28
+ workspace: ENV[SLACK_WORKSPACE_KEY],
29
+ channel: ENV[SLACK_CHANNEL_KEY],
30
+ token: ENV[SLACK_TOKEN_KEY]))
31
+ end
32
+
33
+ def credentials?
34
+ ENV[SLACK_WORKSPACE_KEY].present? &&
35
+ ENV[SLACK_CHANNEL_KEY].present? &&
36
+ ENV[SLACK_TOKEN_KEY].present?
37
+ end
38
+ end
39
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Groundskeeper
4
- VERSION = "0.9.0"
4
+ VERSION = "0.10.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groundskeeper-bitcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - BIT Core
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - certs/ericcf.pem
12
- date: 2019-11-12 00:00:00.000000000 Z
12
+ date: 2019-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jira-ruby
@@ -196,6 +196,7 @@ files:
196
196
  - lib/groundskeeper/rubygems.rb
197
197
  - lib/groundskeeper/semantic_version.rb
198
198
  - lib/groundskeeper/sentry.rb
199
+ - lib/groundskeeper/slack.rb
199
200
  - lib/groundskeeper/ssh.rb
200
201
  - lib/groundskeeper/string_utils.rb
201
202
  - lib/groundskeeper/version.rb