geordi 3.0.3 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +1 -1
- data/README.md +26 -1
- data/lib/geordi/commands/security_update.rb +63 -6
- data/lib/geordi/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f2ea989e784592d99136278e2e7aeca1329d56460590dd0de0c713839d007f4
|
4
|
+
data.tar.gz: c3c001d594fa572a4c562cb91c8796ca1f1170fbfb0168be4f5ec2efaac87556
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c516cd2e6716be0c8e487b5aea0ff741e8d4f99660ee1f9bc2c2277abe275f5b07a31ecd79392cb94c3b804c6357391077d27acd36d8511a1b9dd510baa88e49
|
7
|
+
data.tar.gz: be170bc924f84b7ea056a394348cef9aa24b4b89c2696ef4a400713ca03dad509e446c048217a5626390a459eafaaa52b63212d5990f6898b644acc120fb28c3
|
data/CHANGELOG.md
CHANGED
@@ -11,6 +11,15 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
|
|
11
11
|
### Breaking changes
|
12
12
|
|
13
13
|
|
14
|
+
## 3.1.0 2020-06-03
|
15
|
+
|
16
|
+
### Compatible changes
|
17
|
+
|
18
|
+
- Update security-update for improved workflow (#89): Deploy staging first and ask user, if application is still running. Then deploy other stages.
|
19
|
+
|
20
|
+
### Breaking changes
|
21
|
+
|
22
|
+
|
14
23
|
## 3.0.3 2020-05-27
|
15
24
|
|
16
25
|
### Compatible changes
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -54,6 +54,11 @@ Commit using a story title from Pivotal Tracker.
|
|
54
54
|
|
55
55
|
Example: `geordi commit`
|
56
56
|
|
57
|
+
Any extra arguments are forwarded to `git commit -m <message>`.
|
58
|
+
|
59
|
+
If there are no staged changes, prints a warning but will continue to create
|
60
|
+
an empty commit.
|
61
|
+
|
57
62
|
On the first execution we ask for your Pivotal Tracker API token. It will be
|
58
63
|
stored in `~/.gitpt`.
|
59
64
|
|
@@ -255,10 +260,30 @@ Support for performing security updates.
|
|
255
260
|
|
256
261
|
Preparation for security update: `geordi security-update`
|
257
262
|
|
263
|
+
Checks out production and pulls.
|
264
|
+
|
258
265
|
After performing the update: `geordi security-update finish`
|
259
266
|
|
260
267
|
Switches branches, pulls, pushes and deploys as required by our workflow. Tells
|
261
|
-
what it will do before it does it.
|
268
|
+
what it will do before it does it. In detail:
|
269
|
+
|
270
|
+
1. Asks user, if tests are green
|
271
|
+
|
272
|
+
2. Pushes production
|
273
|
+
|
274
|
+
3. Checks out master and pulls
|
275
|
+
|
276
|
+
4. Merges production and pushes in master
|
277
|
+
|
278
|
+
5. Deploys staging first, if there is a staging environment
|
279
|
+
|
280
|
+
6. Asks user, if deployment log is okay and application is still running on staging
|
281
|
+
|
282
|
+
7. Deploys other stages
|
283
|
+
|
284
|
+
8. Asks user, if deployment log is okay and application is still running on all other stages
|
285
|
+
|
286
|
+
9. Informs user about the next steps
|
262
287
|
|
263
288
|
|
264
289
|
### `geordi server [PORT]`
|
@@ -2,10 +2,30 @@ desc 'security-update [STEP]', 'Support for performing security updates'
|
|
2
2
|
long_desc <<-LONGDESC
|
3
3
|
Preparation for security update: `geordi security-update`
|
4
4
|
|
5
|
+
Checks out production and pulls.
|
6
|
+
|
5
7
|
After performing the update: `geordi security-update finish`
|
6
8
|
|
7
9
|
Switches branches, pulls, pushes and deploys as required by our workflow. Tells
|
8
|
-
what it will do before it does it.
|
10
|
+
what it will do before it does it. In detail:
|
11
|
+
|
12
|
+
1. Asks user, if tests are green
|
13
|
+
|
14
|
+
2. Pushes production
|
15
|
+
|
16
|
+
3. Checks out master and pulls
|
17
|
+
|
18
|
+
4. Merges production and pushes in master
|
19
|
+
|
20
|
+
5. Deploys staging first, if there is a staging environment
|
21
|
+
|
22
|
+
6. Asks user, if deployment log is okay and application is still running on staging
|
23
|
+
|
24
|
+
7. Deploys other stages
|
25
|
+
|
26
|
+
8. Asks user, if deployment log is okay and application is still running on all other stages
|
27
|
+
|
28
|
+
9. Informs user about the next steps
|
9
29
|
LONGDESC
|
10
30
|
|
11
31
|
def security_update(step = 'prepare')
|
@@ -13,7 +33,7 @@ def security_update(step = 'prepare')
|
|
13
33
|
when 'prepare'
|
14
34
|
Interaction.announce 'Preparing for security update'
|
15
35
|
Interaction.warn 'Please read https://makandracards.com/makandra/1587 before applying security updates!'
|
16
|
-
Interaction.note 'About to checkout production and pull'
|
36
|
+
Interaction.note 'About to checkout production and pull.'
|
17
37
|
Interaction.prompt('Continue?', 'y', /y|yes/) || Interaction.fail('Cancelled.')
|
18
38
|
|
19
39
|
Util.system! 'git checkout production', show_cmd: true
|
@@ -27,13 +47,17 @@ def security_update(step = 'prepare')
|
|
27
47
|
|
28
48
|
when 'f', 'finish'
|
29
49
|
# ensure everything is committed
|
30
|
-
|
50
|
+
if Util.testing?
|
51
|
+
puts 'Util.system! git status --porcelain'
|
52
|
+
else
|
53
|
+
`git status --porcelain`.empty? || Interaction.fail('Please commit your changes before finishing the update.')
|
54
|
+
end
|
31
55
|
|
32
56
|
Interaction.announce 'Finishing security update'
|
33
57
|
Interaction.note 'Working directory clean.'
|
34
58
|
Interaction.prompt('Have you successfully run all tests?', 'n', /y|yes/) || Interaction.fail('Please run tests first.')
|
35
59
|
|
36
|
-
Interaction.note 'About to: push production, checkout & pull master, merge production, push master'
|
60
|
+
Interaction.note 'About to: push production, checkout & pull master, merge production, push master.'
|
37
61
|
Interaction.prompt('Continue?', 'n', /y|yes/) || Interaction.fail('Cancelled.')
|
38
62
|
|
39
63
|
Util.system! 'git push', show_cmd: true
|
@@ -42,9 +66,42 @@ def security_update(step = 'prepare')
|
|
42
66
|
Util.system! 'git merge production', show_cmd: true
|
43
67
|
Util.system! 'git push', show_cmd: true
|
44
68
|
|
45
|
-
Interaction.announce '
|
69
|
+
Interaction.announce 'Deployment'
|
46
70
|
deploy = (Util.gem_major_version('capistrano') == 3) ? 'deploy' : 'deploy:migrations'
|
47
|
-
|
71
|
+
|
72
|
+
all_deploy_targets = Util.deploy_targets
|
73
|
+
Interaction.fail 'There are no deploy targets!' if all_deploy_targets.empty?
|
74
|
+
|
75
|
+
if all_deploy_targets.include?('staging')
|
76
|
+
Interaction.note 'There is a staging environment.'
|
77
|
+
Interaction.prompt('Deploy staging now?', 'y', /y|yes/) || Interaction.fail('Cancelled.')
|
78
|
+
|
79
|
+
Interaction.announce 'Deploy staging'
|
80
|
+
Util.system! "bundle exec cap staging #{deploy}", show_cmd: true
|
81
|
+
|
82
|
+
Interaction.prompt('Is the deployment log okay and the application is still running on staging?', 'y', /y|yes/) || Interaction.fail('Please fix the deployment issues on staging before you continue.')
|
83
|
+
else
|
84
|
+
Interaction.note 'There is no staging environment.'
|
85
|
+
end
|
86
|
+
|
87
|
+
deploy_targets_without_staging = all_deploy_targets.select { |target| target != 'staging' }
|
88
|
+
|
89
|
+
if deploy_targets_without_staging.empty?
|
90
|
+
Interaction.note 'There are no other stages.'
|
91
|
+
else
|
92
|
+
puts
|
93
|
+
Interaction.note 'Found the following other stages:'
|
94
|
+
puts deploy_targets_without_staging
|
95
|
+
puts
|
96
|
+
Interaction.prompt('Deploy other stages now?', 'y', /y|yes/) || Interaction.fail('Cancelled.')
|
97
|
+
|
98
|
+
deploy_targets_without_staging.each do |target|
|
99
|
+
Interaction.announce "Deploy #{target}"
|
100
|
+
Util.system! "bundle exec cap #{target} #{deploy}", show_cmd: true
|
101
|
+
end
|
102
|
+
|
103
|
+
Interaction.prompt('Is the application still running on all other stages and the logs are okay?', 'y', /y|yes/) || Interaction.fail('Please fix the application immediately!')
|
104
|
+
end
|
48
105
|
|
49
106
|
Interaction.success 'Successfully pushed and deployed security update'
|
50
107
|
puts
|
data/lib/geordi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geordi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
|
-
rubygems_version: 3.1.
|
147
|
+
rubygems_version: 3.1.4
|
148
148
|
signing_key:
|
149
149
|
specification_version: 4
|
150
150
|
summary: Collection of command line tools we use in our daily work with Ruby, Rails
|