jets 0.8.15 → 0.8.17
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/CHANGELOG.md +8 -0
- data/Gemfile.lock +2 -2
- data/README.md +5 -0
- data/lib/jets.rb +1 -0
- data/lib/jets/cfn/ship.rb +2 -3
- data/lib/jets/commands/deploy.rb +54 -4
- data/lib/jets/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c79e90582a2e523c69fc73f18e77632854a9f2af07068520cadf3f66b087542
|
4
|
+
data.tar.gz: 1f977706cd38f61a72a921486e3e318894da5a9b54ecf5d5676250997649b033
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17346b2c0a6555166ae17d7e5e8236e44cb3a8cea385f9d619d877f4899a31566a48558b57b0cf0be8c412bbe0cdd6b594a57e835ea27a46ecb47d4209fee48e
|
7
|
+
data.tar.gz: 8edf25b912614f8536d30ce1c90f6fc10bc841077db20be03a4f61fa3d5fb2fc2ca72d0b866d2284850db07a968b3009106bb64c59ab632e426c7add0918795e
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
5
5
|
|
6
|
+
## [0.8.17]
|
7
|
+
- fix Jets.eager_load
|
8
|
+
|
9
|
+
## [0.8.16]
|
10
|
+
- add minimal deploy iam policy docs
|
11
|
+
- harden deploy, auto delete minimal stack in rollback_completed
|
12
|
+
- Merge pull request #38 from tongueroo/harden-deploy-rollbacks
|
13
|
+
|
6
14
|
## [0.8.15]
|
7
15
|
- fix route resources macro for api mode pull request #35
|
8
16
|
- remove pg dependency from jets and add as part of project Gemfile pull request #36
|
data/Gemfile.lock
CHANGED
@@ -11,7 +11,7 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
jets (0.8.
|
14
|
+
jets (0.8.17)
|
15
15
|
actionpack (>= 5.2.1)
|
16
16
|
actionview (>= 5.2.1)
|
17
17
|
activerecord (>= 5.2.1)
|
@@ -118,7 +118,7 @@ GEM
|
|
118
118
|
mini_portile2 (~> 2.3.0)
|
119
119
|
pg (0.21.0)
|
120
120
|
rack (2.0.5)
|
121
|
-
rack-proxy (0.6.
|
121
|
+
rack-proxy (0.6.5)
|
122
122
|
rack
|
123
123
|
rack-test (1.1.0)
|
124
124
|
rack (>= 1.0, < 3)
|
data/README.md
CHANGED
@@ -139,3 +139,8 @@ For more documentation, check out the official docs: [Ruby on Jets](http://rubyo
|
|
139
139
|
* [AWS Lambda Ruby Support at Native Speed with Jets](https://blog.boltops.com/2018/09/02/aws-lambda-ruby-support-at-native-speed-with-jets)
|
140
140
|
* [Jets Tutorial An Introductory CRUD App Part 1](https://blog.boltops.com/2018/09/07/jets-tutorial-crud-app-introduction-part-1)
|
141
141
|
* [Jets Tutorial Deploy to AWS Lambda Part 2](https://blog.boltops.com/2018/09/08/jets-tutorial-deploy-to-aws-lambda-part-2)
|
142
|
+
* [Jets Tutorial Debugging Logs Part 3](https://blog.boltops.com/2018/09/09/jets-tutorial-debugging-logs-part-3)
|
143
|
+
* [Jets Tutorial Background Jobs Part 4](https://blog.boltops.com/2018/09/10/jets-tutorial-background-jobs-part-4)
|
144
|
+
* [Jets Tutorial IAM Policies Part 5](https://blog.boltops.com/2018/09/11/jets-tutorial-iam-policies-part-5)
|
145
|
+
* [Jets Tutorial Function Properties Part 6](https://blog.boltops.com/2018/09/12/jets-tutorial-function-properties-part-6)
|
146
|
+
* [Jets Tutorial Extra Environments Part 7](https://blog.boltops.com/2018/09/13/jets-tutorial-extra-environments-part-7)
|
data/lib/jets.rb
CHANGED
data/lib/jets/cfn/ship.rb
CHANGED
@@ -50,7 +50,6 @@ class Jets::Cfn
|
|
50
50
|
|
51
51
|
def create_stack
|
52
52
|
# parent stack template is on filesystem and child stacks templates is on s3
|
53
|
-
template_body = IO.read(@template_path)
|
54
53
|
cfn.create_stack(stack_options)
|
55
54
|
end
|
56
55
|
time :create_stack
|
@@ -60,7 +59,7 @@ class Jets::Cfn
|
|
60
59
|
cfn.update_stack(stack_options)
|
61
60
|
rescue Aws::CloudFormation::Errors::ValidationError => e
|
62
61
|
puts "ERROR: #{e.message}".red
|
63
|
-
|
62
|
+
true # error
|
64
63
|
end
|
65
64
|
end
|
66
65
|
time :update_stack
|
@@ -125,7 +124,7 @@ class Jets::Cfn
|
|
125
124
|
puts " #{command_with_iam(capabilities)}"
|
126
125
|
|
127
126
|
puts "Please confirm (y/n)"
|
128
|
-
|
127
|
+
$stdin.gets # confirm
|
129
128
|
end
|
130
129
|
|
131
130
|
def command_with_iam(capabilities)
|
data/lib/jets/commands/deploy.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Jets::Commands
|
2
2
|
class Deploy
|
3
|
+
extend Memoist
|
3
4
|
include StackInfo
|
4
5
|
include Jets::Timing
|
5
6
|
|
@@ -16,7 +17,15 @@ module Jets::Commands
|
|
16
17
|
build_code
|
17
18
|
validate_routes!
|
18
19
|
|
19
|
-
#
|
20
|
+
# Delete existing rollback stack from previous bad minimal deploy
|
21
|
+
if minimal_rollback_complete?
|
22
|
+
puts "Existing stack is in ROLLBACK_COMPLETE state from a previous failed minimal deploy. Deleting stack and continuing."
|
23
|
+
cfn.delete_stack(stack_name: stack_name)
|
24
|
+
status.wait
|
25
|
+
status.reset
|
26
|
+
end
|
27
|
+
|
28
|
+
# Stack could be in a weird rollback state or in progress state
|
20
29
|
exit_unless_updateable!
|
21
30
|
|
22
31
|
ship(stack_type: :minimal) if first_run?
|
@@ -56,6 +65,44 @@ module Jets::Commands
|
|
56
65
|
end
|
57
66
|
time :ship
|
58
67
|
|
68
|
+
def status
|
69
|
+
Jets::Cfn::Status.new(stack_name)
|
70
|
+
end
|
71
|
+
memoize :status
|
72
|
+
|
73
|
+
def stack_name
|
74
|
+
Jets::Naming.parent_stack_name
|
75
|
+
end
|
76
|
+
|
77
|
+
# Checks for a few things before deciding to delete the parent stack
|
78
|
+
#
|
79
|
+
# * Parent stack status status is ROLLBACK_COMPLETE
|
80
|
+
# * Parent resources are in the DELETE_COMPLETE state
|
81
|
+
#
|
82
|
+
def minimal_rollback_complete?
|
83
|
+
stack = find_stack(stack_name)
|
84
|
+
return false unless stack
|
85
|
+
|
86
|
+
return false unless stack.stack_status == 'ROLLBACK_COMPLETE'
|
87
|
+
|
88
|
+
# Finally check if all the minimal resources in the parent template have been deleted
|
89
|
+
resp = cfn.describe_stack_resources(stack_name: stack_name)
|
90
|
+
resource_statuses = resp.stack_resources.map(&:resource_status).uniq
|
91
|
+
resource_statuses == ['DELETE_COMPLETE']
|
92
|
+
end
|
93
|
+
|
94
|
+
def find_stack(stack_name)
|
95
|
+
resp = cfn.describe_stacks(stack_name: stack_name)
|
96
|
+
resp.stacks.first
|
97
|
+
rescue Aws::CloudFormation::Errors::ValidationError => e
|
98
|
+
# example: Stack with id demo-dev does not exist
|
99
|
+
if e.message =~ /Stack with/ && e.message =~ /does not exist/
|
100
|
+
nil
|
101
|
+
else
|
102
|
+
raise
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
59
106
|
# All CloudFormation states listed here: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
|
60
107
|
def exit_unless_updateable!
|
61
108
|
stack_name = Jets::Naming.parent_stack_name
|
@@ -66,9 +113,12 @@ module Jets::Commands
|
|
66
113
|
status = stack["stack_status"]
|
67
114
|
if status =~ /^ROLLBACK_/ ||
|
68
115
|
status =~ /_IN_PROGRESS$/
|
69
|
-
|
70
|
-
|
71
|
-
|
116
|
+
region = `aws configure get region`.strip rescue "us-east-1"
|
117
|
+
url = "https://console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks"
|
118
|
+
puts "The parent stack of the #{Jets.config.project_name.colorize(:green)} project is not in an updateable state."
|
119
|
+
puts "Stack name #{stack_name.colorize(:yellow)} status #{stack["stack_status"].colorize(:yellow)}"
|
120
|
+
puts "Here's the CloudFormation url to check for more details #{url}"
|
121
|
+
exit 1
|
72
122
|
end
|
73
123
|
end
|
74
124
|
end
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|