jets 5.0.3 → 5.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/jets.gemspec +1 -1
- data/lib/jets/builders/code_builder.rb +1 -0
- data/lib/jets/cfn/ship.rb +4 -14
- data/lib/jets/cfn/status.rb +46 -3
- data/lib/jets/commands/delete/delete_command.rb +2 -2
- data/lib/jets/commands/deploy/deploy_command.rb +4 -4
- data/lib/jets/commands/status/status_command.rb +8 -1
- data/lib/jets/lambda/dsl.rb +2 -4
- data/lib/jets/stack/main/dsl/sqs.rb +1 -1
- data/lib/jets/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9188a490c6d04a0c7b0f947442718008cc8724979dfe0f0f49d1302d90185efc
|
4
|
+
data.tar.gz: a3f42abadc033434cb21af8b43ed7ecccdfbd41a4da8a4eb23bd959506a3c5e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8d64806385a02832b1c14de77f2262b7507dc4090afad9e240740d7ec4ce8fa0c4970cd30d80ccdbd960d70d4248ad7ed1d2efc1bf4e5ddde473c0bc4705279
|
7
|
+
data.tar.gz: 7f5cb632fe2bc2de10a986db14921d48b867c352af313192825180fd2a9d7687b75b2ed55772d66b60e266b788297b2e97aabdbfa07a07a466d774861906b3cd
|
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/).
|
5
5
|
|
6
|
+
## [5.0.5] - 2023-12-19
|
7
|
+
- [#697](https://github.com/rubyonjets/jets/pull/697) fix sqs_queue output url camelcase name
|
8
|
+
|
9
|
+
## [5.0.4] - 2023-12-17
|
10
|
+
- [#695](https://github.com/rubyonjets/jets/pull/695) dont run reconfigure webpacker unless using
|
11
|
+
- [#696](https://github.com/rubyonjets/jets/pull/696) improve deploy failure message by showing nested stack failure message
|
12
|
+
- update delete error messaging to stack
|
13
|
+
|
6
14
|
## [5.0.3] - 2023-12-15
|
7
15
|
- [#691](https://github.com/rubyonjets/jets/pull/691) jets deploy fix for empty project
|
8
16
|
- [#692](https://github.com/rubyonjets/jets/pull/692) fix jets deploy for empty project
|
data/jets.gemspec
CHANGED
@@ -48,7 +48,7 @@ Gem::Specification.new do |spec|
|
|
48
48
|
spec.add_dependency "aws-sdk-ssm"
|
49
49
|
spec.add_dependency "cfn_camelizer", ">= 0.4.9"
|
50
50
|
spec.add_dependency "cfn_response"
|
51
|
-
spec.add_dependency "cfn-status"
|
51
|
+
spec.add_dependency "cfn-status", ">= 0.5.0"
|
52
52
|
spec.add_dependency "cli-format", ">= 0.4.0"
|
53
53
|
spec.add_dependency "dotenv"
|
54
54
|
spec.add_dependency "dsl_evaluator", ">= 0.3.0" # for DslEvaluator.print_code
|
@@ -279,6 +279,7 @@ module Jets::Builders
|
|
279
279
|
# when they deploy a jets project in development mode
|
280
280
|
def reconfigure_development_webpacker
|
281
281
|
return unless Jets.env.development?
|
282
|
+
return unless gemfile_include?("jetpacker")
|
282
283
|
headline "Reconfiguring webpacker development settings for AWS Lambda."
|
283
284
|
|
284
285
|
webpacker_yml = "#{"#{stage_area}/code"}/config/webpacker.yml"
|
data/lib/jets/cfn/ship.rb
CHANGED
@@ -31,16 +31,11 @@ module Jets::Cfn
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
# waits for /(_COMPLETE|_FAILED)$/ status
|
35
|
+
cfn_status = Jets::Cfn::Status.new
|
36
|
+
success = cfn_status.wait
|
35
37
|
unless success
|
36
|
-
|
37
|
-
The Jets application failed to deploy. Jets creates a few CloudFormation stacks to deploy your application.
|
38
|
-
The logs above show the CloudFormation parent stack events and points to the stack with the error.
|
39
|
-
Please go to the CloudFormation console and look for the specific stack with the error.
|
40
|
-
The specific child stack usually shows more detailed information and can be used to resolve the issue.
|
41
|
-
Example of checking the CloudFormation console: https://rubyonjets.com/docs/debugging/cloudformation/
|
42
|
-
EOL
|
43
|
-
exit 1
|
38
|
+
cfn_status.failure_message!
|
44
39
|
end
|
45
40
|
|
46
41
|
save_apigw_state
|
@@ -100,11 +95,6 @@ module Jets::Cfn
|
|
100
95
|
@template ||= Template.new(Jets::Names.parent_template_path, @options)
|
101
96
|
end
|
102
97
|
|
103
|
-
# check for /(_COMPLETE|_FAILED)$/ status
|
104
|
-
def wait_for_stack
|
105
|
-
Jets::Cfn::Status.new(@options).wait
|
106
|
-
end
|
107
|
-
|
108
98
|
def save_apigw_state
|
109
99
|
Jets::Router::State.save_apigw_state
|
110
100
|
end
|
data/lib/jets/cfn/status.rb
CHANGED
@@ -2,9 +2,52 @@ require 'cfn_status'
|
|
2
2
|
|
3
3
|
module Jets::Cfn
|
4
4
|
class Status < CfnStatus
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
extend Memoist
|
6
|
+
|
7
|
+
def initialize(stack_name = Jets::Names.parent_stack_name, options={})
|
8
|
+
super(stack_name, options)
|
9
|
+
end
|
10
|
+
|
11
|
+
def failure_message!
|
12
|
+
puts <<~EOL
|
13
|
+
The Jets application failed to deploy. Jets creates a few CloudFormation stacks
|
14
|
+
to deploy your application. The logs above show the CloudFormation parent stack
|
15
|
+
events. You can go to the CloudFormation console and look for the nested stack
|
16
|
+
with the error. The specific nested stack usually shows more detailed information
|
17
|
+
and can be used to resolve the issue.
|
18
|
+
Example of checking the CloudFormation console:
|
19
|
+
|
20
|
+
https://rubyonjets.com/docs/debugging/cloudformation/
|
21
|
+
|
22
|
+
EOL
|
23
|
+
|
24
|
+
show_nested_stack_error
|
25
|
+
|
26
|
+
exit 1
|
27
|
+
end
|
28
|
+
|
29
|
+
def show_nested_stack_error
|
30
|
+
event = find_failed_event
|
31
|
+
return unless event
|
32
|
+
puts "-" * 80
|
33
|
+
puts "Here's the nested stack error details: #{event.resource_status_reason}"
|
34
|
+
self.class.new(event.physical_resource_id, start_index_before_delete: true).run
|
35
|
+
|
36
|
+
region = Jets.aws.region
|
37
|
+
puts <<~EOL
|
38
|
+
Here's also the AWS Console link to the failed nested stack:
|
39
|
+
|
40
|
+
https://#{region}.console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks/events?filteringText=&filteringStatus=active&viewNested=true&stackId=#{event.physical_resource_id}
|
41
|
+
|
42
|
+
EOL
|
43
|
+
end
|
44
|
+
|
45
|
+
def find_failed_event
|
46
|
+
cfn_status = self.class.new # fresh instance to get the refreshed events
|
47
|
+
cfn_status.refresh_events
|
48
|
+
i = cfn_status.start_index
|
49
|
+
events = cfn_status.events[0..i].reverse # events are in reverse chronological order
|
50
|
+
events.find { |e| e.resource_status =~ /FAILED/ } # first failed event
|
8
51
|
end
|
9
52
|
end
|
10
53
|
end
|
@@ -44,7 +44,7 @@ module Jets::Command
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def wait_for_stack
|
47
|
-
status = Jets::Cfn::Status.new
|
47
|
+
status = Jets::Cfn::Status.new
|
48
48
|
start_time = Time.now
|
49
49
|
status.wait
|
50
50
|
took = Time.now - start_time
|
@@ -60,7 +60,7 @@ module Jets::Command
|
|
60
60
|
def confirm_project_exists
|
61
61
|
stack = find_stack(parent_stack_name)
|
62
62
|
return if stack
|
63
|
-
puts "ERROR:
|
63
|
+
puts "ERROR: Stack #{parent_stack_name} does not exist".color(:red)
|
64
64
|
exit 1
|
65
65
|
end
|
66
66
|
|
@@ -44,8 +44,8 @@ module Jets::Command
|
|
44
44
|
def delete_minimal_stack
|
45
45
|
puts "Existing stack is in ROLLBACK_COMPLETE state from a previous failed minimal deploy. Deleting stack and continuing."
|
46
46
|
cfn.delete_stack(stack_name: stack_name)
|
47
|
-
|
48
|
-
|
47
|
+
cfn_status.wait
|
48
|
+
cfn_status.reset
|
49
49
|
end
|
50
50
|
|
51
51
|
def check_dev_mode
|
@@ -69,8 +69,8 @@ module Jets::Command
|
|
69
69
|
Jets::Cfn::Ship.new(options).run
|
70
70
|
end
|
71
71
|
|
72
|
-
def
|
73
|
-
@
|
72
|
+
def cfn_status
|
73
|
+
@cfn_status ||= Jets::Cfn::Status.new(stack_name)
|
74
74
|
end
|
75
75
|
|
76
76
|
def stack_name
|
@@ -1,9 +1,16 @@
|
|
1
1
|
module Jets::Command
|
2
2
|
class StatusCommand < Base
|
3
|
+
include Jets::AwsServices
|
4
|
+
|
3
5
|
desc "status", "Shows the current status of the Jets app"
|
4
6
|
long_desc Help.text(:status)
|
5
7
|
def perform
|
6
|
-
Jets
|
8
|
+
Jets.boot
|
9
|
+
cfn_status = Jets::Cfn::Status.new
|
10
|
+
success = cfn_status.run
|
11
|
+
unless success
|
12
|
+
cfn_status.failure_message!
|
13
|
+
end
|
7
14
|
end
|
8
15
|
end
|
9
16
|
end
|
data/lib/jets/lambda/dsl.rb
CHANGED
@@ -245,13 +245,11 @@ module Jets::Lambda::Dsl
|
|
245
245
|
end
|
246
246
|
|
247
247
|
def ref(name)
|
248
|
-
|
249
|
-
"!Ref #{name}"
|
248
|
+
"!Ref #{name.to_s.camelize}"
|
250
249
|
end
|
251
250
|
|
252
251
|
def sub(value)
|
253
|
-
|
254
|
-
"!Sub #{value}"
|
252
|
+
"!Sub #{value.to_s.camelize}"
|
255
253
|
end
|
256
254
|
|
257
255
|
# meth is a Symbol
|
@@ -4,7 +4,7 @@ module Jets::Stack::Main::Dsl
|
|
4
4
|
# props[:queue_name] ||= id.to_s # comment out to allow CloudFormation to generate name
|
5
5
|
resource(id, "AWS::SQS::Queue", props)
|
6
6
|
output(id, Value: get_att("#{id}.Arn")) # normal !Ref returns the sqs url the ARN is useful for nested stacks depends_on
|
7
|
-
output("#{id}
|
7
|
+
output("#{id}_url", ref(id)) # useful for Stack.lookup method. IE: List.lookup(:waitlist_url)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
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: 5.0.
|
4
|
+
version: 5.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -296,14 +296,14 @@ dependencies:
|
|
296
296
|
requirements:
|
297
297
|
- - ">="
|
298
298
|
- !ruby/object:Gem::Version
|
299
|
-
version:
|
299
|
+
version: 0.5.0
|
300
300
|
type: :runtime
|
301
301
|
prerelease: false
|
302
302
|
version_requirements: !ruby/object:Gem::Requirement
|
303
303
|
requirements:
|
304
304
|
- - ">="
|
305
305
|
- !ruby/object:Gem::Version
|
306
|
-
version:
|
306
|
+
version: 0.5.0
|
307
307
|
- !ruby/object:Gem::Dependency
|
308
308
|
name: cli-format
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|