groundskeeper-bitcore 0.18.0 → 0.22.0
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 +4 -4
- data/config/deploy.rb +1 -1
- data/config/git_config.rb +4 -1
- data/groundskeeper.gemspec +6 -6
- data/lib/groundskeeper/application.rb +1 -0
- data/lib/groundskeeper/commands.rb +37 -20
- data/lib/groundskeeper/jira.rb +16 -1
- data/lib/groundskeeper/version.rb +1 -1
- metadata +20 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d4f46740d1ddb1bae4d6bc8992e3b35ac04e4eb2f150344b792509d476d7bb0
|
4
|
+
data.tar.gz: ca464350273ce97cbfe8397129bf741eb1d75c0df36f046caa4746f418b8c24a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6626ba1e74879f74aa3afb5f71542e2078fca42c824849451d7e798f6c892bd163d7de4ef416224ae3c53a4bb160c69fb6baef51b0af5639576a2128dca909e6
|
7
|
+
data.tar.gz: 656fea63b23a3c28320cc43e80c7fe3c65f5e6a5e97bf9783172bf8d57786c47197a854e6ef0941f3eb2b9e2a70e591de16d40a841a79edf48aa1699e434d3bb
|
data/config/deploy.rb
CHANGED
@@ -37,7 +37,7 @@ set :shared_files, fetch(:shared_files, []).push(
|
|
37
37
|
|
38
38
|
# Each deploy, these directories will be checked for changes. If changes are
|
39
39
|
# detected, assets will be precompiled. Otherwise that step will be skipped.
|
40
|
-
set :asset_dirs, ["app/javascript/"]
|
40
|
+
set :asset_dirs, ["app/javascript/", "app/packs/"]
|
41
41
|
|
42
42
|
# This task is the environment that is loaded for all remote run commands, such
|
43
43
|
# as `mina deploy` or `mina rake`.
|
data/config/git_config.rb
CHANGED
@@ -2,7 +2,10 @@
|
|
2
2
|
|
3
3
|
require "yaml"
|
4
4
|
require "json"
|
5
|
-
require "groundskeeper"
|
5
|
+
require "groundskeeper/project"
|
6
|
+
require "groundskeeper/document"
|
7
|
+
require "groundskeeper/git"
|
8
|
+
require "groundskeeper/executable"
|
6
9
|
|
7
10
|
desc "Sets up project details."
|
8
11
|
# rubocop:disable Metrics/BlockLength
|
data/groundskeeper.gemspec
CHANGED
@@ -7,13 +7,12 @@ require "groundskeeper/version"
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
8
|
spec.name = "groundskeeper-bitcore"
|
9
9
|
spec.version = Groundskeeper::VERSION
|
10
|
-
spec.authors = ["
|
11
|
-
spec.email = ["
|
10
|
+
spec.authors = ["RADD"]
|
11
|
+
spec.email = ["radd@northwestern.edu"]
|
12
12
|
|
13
13
|
spec.summary = "A gem for managing releases and deployments."
|
14
|
-
spec.homepage = "https://
|
14
|
+
spec.homepage = "https://bitbucket.org/isgmh-radd/groundskeeper/src/master/"
|
15
15
|
spec.license = "MIT"
|
16
|
-
spec.cert_chain = ["certs/ericcf.pem"]
|
17
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the
|
18
17
|
# 'allowed_push_host' to allow pushing to a single host or delete this
|
19
18
|
# section to allow pushing to any host.
|
@@ -31,15 +30,16 @@ Gem::Specification.new do |spec|
|
|
31
30
|
spec.executables = "ground"
|
32
31
|
spec.require_paths = %w[lib config]
|
33
32
|
|
33
|
+
spec.required_ruby_version = ">= 2.4"
|
34
34
|
spec.add_dependency "jira-ruby", "~> 2.0"
|
35
35
|
spec.add_dependency "mina", "~> 1.2"
|
36
36
|
spec.add_dependency "mina-whenever", "~> 1.0.1"
|
37
37
|
spec.add_dependency "thor", "~> 1.0"
|
38
38
|
|
39
39
|
spec.add_development_dependency "bundler", "~> 2.0"
|
40
|
-
spec.add_development_dependency "byebug"
|
40
|
+
spec.add_development_dependency "byebug", "~> 11.1"
|
41
41
|
spec.add_development_dependency "minitest", "~> 5.0"
|
42
42
|
spec.add_development_dependency "rubocop", "~> 0.63"
|
43
|
-
spec.add_development_dependency "rubocop-performance"
|
43
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.12"
|
44
44
|
spec.add_development_dependency "simplecov", "~> 0.14"
|
45
45
|
end
|
@@ -95,7 +95,7 @@ module Groundskeeper
|
|
95
95
|
# rubocop:disable Metrics/MethodLength,Metrics/AbcSize
|
96
96
|
def info(options = {})
|
97
97
|
return unrecognized_version unless version_file.exists?
|
98
|
-
return unless check_groundskeeper_version
|
98
|
+
return groundskeeper_outdated unless check_groundskeeper_version
|
99
99
|
|
100
100
|
Executable.verbose = options[:verbose]
|
101
101
|
pull_project_details
|
@@ -114,13 +114,12 @@ module Groundskeeper
|
|
114
114
|
# rubocop:enable Metrics/AbcSize
|
115
115
|
|
116
116
|
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity,
|
117
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
118
117
|
def release(options = {})
|
119
118
|
is_initial_release = !version_file.exists?
|
120
119
|
|
121
120
|
return missing_jira_credentials unless jira.credentials?
|
122
121
|
return missing_bitbucket_credentials unless bitbucket.credentials?
|
123
|
-
return unless check_groundskeeper_version
|
122
|
+
return groundskeeper_outdated unless check_groundskeeper_version
|
124
123
|
return unrecognized_version unless version_file.rails?
|
125
124
|
|
126
125
|
version_file.create_initial_version! unless version_file.exists?
|
@@ -139,12 +138,12 @@ module Groundskeeper
|
|
139
138
|
create_pr
|
140
139
|
end
|
141
140
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
142
|
-
# rubocop:enable Metrics/MethodLength
|
141
|
+
# rubocop:enable Metrics/MethodLength
|
143
142
|
|
144
143
|
# :nocov:
|
145
144
|
def predeploy(options = {})
|
146
145
|
return unrecognized_version unless version_file.exists?
|
147
|
-
return unless check_groundskeeper_version
|
146
|
+
return groundskeeper_outdated unless check_groundskeeper_version
|
148
147
|
|
149
148
|
Executable.verbose = options[:verbose]
|
150
149
|
pull_project_details
|
@@ -161,7 +160,7 @@ module Groundskeeper
|
|
161
160
|
return missing_jira_credentials unless jira.credentials?
|
162
161
|
return missing_sentry_credentials unless sentry.credentials?
|
163
162
|
return missing_slack_credentials unless slack.credentials?
|
164
|
-
return unless check_groundskeeper_version
|
163
|
+
return groundskeeper_outdated unless check_groundskeeper_version
|
165
164
|
return unable_to_ssh unless ssh.can_connect?
|
166
165
|
|
167
166
|
Executable.verbose = options[:verbose]
|
@@ -205,7 +204,6 @@ module Groundskeeper
|
|
205
204
|
end
|
206
205
|
end
|
207
206
|
|
208
|
-
# rubocop:disable Metrics/MethodLength
|
209
207
|
def check_groundskeeper_version
|
210
208
|
@check_groundskeeper_version ||= begin
|
211
209
|
console.say("Groundskeeper version #{Groundskeeper::VERSION}\n\n",
|
@@ -214,19 +212,24 @@ module Groundskeeper
|
|
214
212
|
|
215
213
|
return true unless SemanticVersion.new(latest_version) > VERSION
|
216
214
|
|
217
|
-
|
218
|
-
Groundskeeper is outdated,
|
219
|
-
would you like the latest version installed?
|
220
|
-
TEXT
|
221
|
-
|
222
|
-
response = console.ask(question, :red, limited_to: %w[yes no])
|
223
|
-
|
224
|
-
return true if response == "no"
|
215
|
+
return false unless install_latest_groundskeeper?
|
225
216
|
|
226
217
|
console.run("gem install groundskeeper-bitcore")
|
218
|
+
|
219
|
+
true
|
227
220
|
end
|
228
221
|
end
|
229
|
-
|
222
|
+
|
223
|
+
# :nocov:
|
224
|
+
def install_latest_groundskeeper?
|
225
|
+
question = <<~TEXT.squish
|
226
|
+
Groundskeeper is outdated,
|
227
|
+
would you like the latest version installed?
|
228
|
+
TEXT
|
229
|
+
|
230
|
+
console.ask(question, :red, limited_to: %w[yes no]) == "yes"
|
231
|
+
end
|
232
|
+
# :nocov:
|
230
233
|
|
231
234
|
def announce_latest_tag
|
232
235
|
console.say(
|
@@ -285,8 +288,14 @@ module Groundskeeper
|
|
285
288
|
|
286
289
|
def add_version_to_jira_issues
|
287
290
|
issue_ids = jira.included_issues(recent_commits)
|
288
|
-
jira.add_version_to_remote_issues(
|
289
|
-
|
291
|
+
message = jira.add_version_to_remote_issues(
|
292
|
+
next_jira_version_name, issue_ids
|
293
|
+
)
|
294
|
+
if message.blank?
|
295
|
+
console.say("# added version to Jira issues #{issue_ids}", :green)
|
296
|
+
else
|
297
|
+
announce_error(message)
|
298
|
+
end
|
290
299
|
end
|
291
300
|
|
292
301
|
def create_pr
|
@@ -311,6 +320,10 @@ module Groundskeeper
|
|
311
320
|
tag.nil? ? false : git.list_tags.include?(tag)
|
312
321
|
end
|
313
322
|
|
323
|
+
def announce_error(message)
|
324
|
+
console.say("# #{message}", :red)
|
325
|
+
end
|
326
|
+
|
314
327
|
def unrecognized_tag
|
315
328
|
console.say(
|
316
329
|
"Tag not found, try again with an existing tag.",
|
@@ -325,6 +338,10 @@ module Groundskeeper
|
|
325
338
|
)
|
326
339
|
end
|
327
340
|
|
341
|
+
def groundskeeper_outdated
|
342
|
+
console.say("Groundskeeper outdated. Install the latest version.", :red)
|
343
|
+
end
|
344
|
+
|
328
345
|
def missing_bitbucket_credentials
|
329
346
|
console.say(
|
330
347
|
"Please configure your Bitbucket environment variables.",
|
@@ -377,7 +394,7 @@ module Groundskeeper
|
|
377
394
|
end
|
378
395
|
end
|
379
396
|
|
380
|
-
# rubocop:disable Metrics/MethodLength
|
397
|
+
# rubocop:disable Metrics/MethodLength
|
381
398
|
def update_deployed_issues
|
382
399
|
tries = 0
|
383
400
|
|
@@ -406,7 +423,7 @@ module Groundskeeper
|
|
406
423
|
# :nocov:
|
407
424
|
end
|
408
425
|
end
|
409
|
-
# rubocop:enable Metrics/MethodLength
|
426
|
+
# rubocop:enable Metrics/MethodLength
|
410
427
|
|
411
428
|
# :nocov:
|
412
429
|
def release_version
|
data/lib/groundskeeper/jira.rb
CHANGED
@@ -4,6 +4,8 @@ require "cgi"
|
|
4
4
|
require "date"
|
5
5
|
require "jira-ruby"
|
6
6
|
|
7
|
+
class IssueNotFoundError < StandardError; end
|
8
|
+
|
7
9
|
module Groundskeeper
|
8
10
|
# Wraps an interface to Jira.
|
9
11
|
class Jira
|
@@ -46,6 +48,8 @@ module Groundskeeper
|
|
46
48
|
|
47
49
|
# :nocov:
|
48
50
|
def add_version_to_issue(issue_id:, version_name:)
|
51
|
+
raise IssueNotFoundError if client.Issue.find(issue_id).nil?
|
52
|
+
|
49
53
|
client.Issue
|
50
54
|
.find(issue_id)
|
51
55
|
.save(update: { fixVersions: [{ add: { name: version_name } }] })
|
@@ -120,11 +124,22 @@ module Groundskeeper
|
|
120
124
|
client.create_version(name: name, prefix: prefix)
|
121
125
|
end
|
122
126
|
|
127
|
+
# rubocop:disable Metrics/MethodLength
|
123
128
|
def add_version_to_remote_issues(name, issue_ids)
|
129
|
+
failed_issues = []
|
124
130
|
issue_ids.each do |issue_id|
|
125
|
-
|
131
|
+
begin
|
132
|
+
client.add_version_to_issue(issue_id: issue_id, version_name: name)
|
133
|
+
rescue IssueNotFoundError
|
134
|
+
failed_issues << issue_id
|
135
|
+
next
|
136
|
+
end
|
126
137
|
end
|
138
|
+
return "" unless failed_issues.count.positive?
|
139
|
+
|
140
|
+
"Jira issue(s) not found, is #{failed_issues.join(', ')} correct?"
|
127
141
|
end
|
142
|
+
# rubocop:enable Metrics/MethodLength
|
128
143
|
|
129
144
|
def transition_remote_issues(transition_type, issue_ids)
|
130
145
|
issue_ids.each do |issue_id|
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groundskeeper-bitcore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- RADD
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
-
|
12
|
-
date: 2020-06-05 00:00:00.000000000 Z
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-12-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: jira-ruby
|
@@ -85,16 +84,16 @@ dependencies:
|
|
85
84
|
name: byebug
|
86
85
|
requirement: !ruby/object:Gem::Requirement
|
87
86
|
requirements:
|
88
|
-
- - "
|
87
|
+
- - "~>"
|
89
88
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
89
|
+
version: '11.1'
|
91
90
|
type: :development
|
92
91
|
prerelease: false
|
93
92
|
version_requirements: !ruby/object:Gem::Requirement
|
94
93
|
requirements:
|
95
|
-
- - "
|
94
|
+
- - "~>"
|
96
95
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
96
|
+
version: '11.1'
|
98
97
|
- !ruby/object:Gem::Dependency
|
99
98
|
name: minitest
|
100
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,16 +126,16 @@ dependencies:
|
|
127
126
|
name: rubocop-performance
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
128
|
requirements:
|
130
|
-
- - "
|
129
|
+
- - "~>"
|
131
130
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
131
|
+
version: '1.12'
|
133
132
|
type: :development
|
134
133
|
prerelease: false
|
135
134
|
version_requirements: !ruby/object:Gem::Requirement
|
136
135
|
requirements:
|
137
|
-
- - "
|
136
|
+
- - "~>"
|
138
137
|
- !ruby/object:Gem::Version
|
139
|
-
version: '
|
138
|
+
version: '1.12'
|
140
139
|
- !ruby/object:Gem::Dependency
|
141
140
|
name: simplecov
|
142
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,9 +150,9 @@ dependencies:
|
|
151
150
|
- - "~>"
|
152
151
|
- !ruby/object:Gem::Version
|
153
152
|
version: '0.14'
|
154
|
-
description:
|
153
|
+
description:
|
155
154
|
email:
|
156
|
-
-
|
155
|
+
- radd@northwestern.edu
|
157
156
|
executables:
|
158
157
|
- ground
|
159
158
|
extensions: []
|
@@ -203,12 +202,12 @@ files:
|
|
203
202
|
- lib/groundskeeper/string_utils.rb
|
204
203
|
- lib/groundskeeper/version.rb
|
205
204
|
- lib/groundskeeper/website.rb
|
206
|
-
homepage: https://
|
205
|
+
homepage: https://bitbucket.org/isgmh-radd/groundskeeper/src/master/
|
207
206
|
licenses:
|
208
207
|
- MIT
|
209
208
|
metadata:
|
210
209
|
allowed_push_host: https://rubygems.org
|
211
|
-
post_install_message:
|
210
|
+
post_install_message:
|
212
211
|
rdoc_options: []
|
213
212
|
require_paths:
|
214
213
|
- lib
|
@@ -217,15 +216,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
217
216
|
requirements:
|
218
217
|
- - ">="
|
219
218
|
- !ruby/object:Gem::Version
|
220
|
-
version: '
|
219
|
+
version: '2.4'
|
221
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
222
221
|
requirements:
|
223
222
|
- - ">="
|
224
223
|
- !ruby/object:Gem::Version
|
225
224
|
version: '0'
|
226
225
|
requirements: []
|
227
|
-
rubygems_version: 3.
|
228
|
-
signing_key:
|
226
|
+
rubygems_version: 3.2.32
|
227
|
+
signing_key:
|
229
228
|
specification_version: 4
|
230
229
|
summary: A gem for managing releases and deployments.
|
231
230
|
test_files: []
|