jets 5.0.0 → 5.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -1
- data/CONTRIBUTING.md +1 -1
- data/README.md +7 -7
- data/jets.gemspec +2 -1
- data/lib/jets/aws_services/stack_status.rb +1 -1
- data/lib/jets/builders/code_builder.rb +3 -4
- data/lib/jets/cfn/deployment.rb +58 -18
- data/lib/jets/cfn/resource/api_gateway/rest_api/logical_id.rb +2 -2
- data/lib/jets/cfn/resource/s3/jets_bucket.rb +2 -2
- data/lib/jets/command/api_helpers.rb +1 -0
- data/lib/jets/command/base.rb +5 -0
- data/lib/jets/command/help/gems/check.md +1 -6
- data/lib/jets/command/help/logs.md +1 -1
- data/lib/jets/command/help/releases.md +7 -25
- data/lib/jets/command/rake_decorate.rb +38 -0
- data/lib/jets/command.rb +10 -1
- data/lib/jets/commands/delete/delete_command.rb +2 -3
- data/lib/jets/commands/releases/releases_command.rb +58 -5
- data/lib/jets/commands/rollback/rollback_command.rb +1 -9
- data/lib/jets/dotenv/ssm.rb +1 -1
- data/lib/jets/generators/overrides/app/templates/.jetsignore +6 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +1 -1
- data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +1 -1
- data/lib/jets/job/base.rb +1 -1
- data/lib/jets/job/dsl/dynamodb_event.rb +1 -1
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +1 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4a384d3b0e4d6523695e38deddbb180904b542b7e03cc095ead1844f02a3571
|
4
|
+
data.tar.gz: b01933003b19b5ae79c4e6e82427e930a1c82197ebf7efb125d150ea405ef3f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b40b236e756e6a93649082776f7ea948250619703a51cd98425cc7876085933975011120547bedc098c3a5fe0000aecfe545adb01b8d9c1de76cb4f4e3a36ae
|
7
|
+
data.tar.gz: 4cc1b4cdc76eb7fd9d4397b2194300a4974c3d3afe94e954c2073a300ccfcc612f16fee657e86214c0c5c96fb983d1003c88db7e2e04d176516fbc9518f5c37a
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,16 @@
|
|
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.1] - 2023-12-11
|
7
|
+
- [#680](https://github.com/rubyonjets/jets/pull/680) fix apigw gateway replacement warning prompt
|
8
|
+
- [#682](https://github.com/rubyonjets/jets/pull/682) Replace puts with Jets.logger.info in jobs
|
9
|
+
- [#683](https://github.com/rubyonjets/jets/pull/683) Fix broken links in README and CONTRIBUTING
|
10
|
+
- [#684](https://github.com/rubyonjets/jets/pull/684) improve cli usage invalid command and options handling
|
11
|
+
- [#685](https://github.com/rubyonjets/jets/pull/685) rollback usage cleanup
|
12
|
+
- [#686](https://github.com/rubyonjets/jets/pull/686) remove need for sprockets-jets dependency
|
13
|
+
- [#687](https://github.com/rubyonjets/jets/pull/687) jets releases:info command
|
14
|
+
- default logging.event to false for generated production
|
15
|
+
|
6
16
|
## [5.0.0] - 2023-12-05
|
7
17
|
Single Lambda Function for Controllers
|
8
18
|
* For controllers, a single Lambda function is deployed going forward.
|
@@ -330,7 +340,7 @@ Breaking Changes:
|
|
330
340
|
- #424 md5 fix subtle bug when code doesnt get uploaded from newly generated shims
|
331
341
|
- #425 add hosted zone id support
|
332
342
|
- #426 use headers origin for actual host in case of cloudfront in front
|
333
|
-
- #428 fixes to
|
343
|
+
- #428 fixes to JETS_NO_INTERNET env var option
|
334
344
|
- #429 fix simple function tmp_loader
|
335
345
|
|
336
346
|
## [2.3.11]
|
data/CONTRIBUTING.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
https://rubyonjets.com/docs/more/contributing/
|
data/README.md
CHANGED
@@ -153,18 +153,18 @@ For more documentation, check out the official docs: [Ruby on Jets](http://rubyo
|
|
153
153
|
* [Local Jets Server](http://rubyonjets.com/docs/local-server/)
|
154
154
|
* [REPL Console](http://rubyonjets.com/docs/repl-console/)
|
155
155
|
* [Project Structure](http://rubyonjets.com/docs/structure/)
|
156
|
-
* [App Configuration](http://rubyonjets.com/docs/
|
157
|
-
* [Database Support](http://rubyonjets.com/docs/database
|
158
|
-
* [Polymorphic Support](http://rubyonjets.com/docs/polymorphic
|
156
|
+
* [App Configuration](http://rubyonjets.com/docs/config/)
|
157
|
+
* [Database Support](http://rubyonjets.com/docs/database/)
|
158
|
+
* [Polymorphic Support](http://rubyonjets.com/docs/polymorphic/)
|
159
159
|
* [Rails Support](http://rubyonjets.com/docs/rails-support/)
|
160
160
|
* [Tutorials](http://rubyonjets.com/docs/tutorials/)
|
161
161
|
* [Prewarming](http://rubyonjets.com/docs/prewarming/)
|
162
|
-
* [Custom Resources](http://rubyonjets.com/docs/
|
163
|
-
* [Shared Resources](http://rubyonjets.com/docs/shared-resources/)
|
162
|
+
* [Custom Resources](http://rubyonjets.com/docs/custom/)
|
163
|
+
* [Shared Resources](http://rubyonjets.com/docs/custom/shared-resources/)
|
164
164
|
* [Installation](http://rubyonjets.com/docs/install/)
|
165
165
|
* [CLI Reference](http://rubyonjets.com/reference/)
|
166
|
-
* [Contributing](http://rubyonjets.com/docs/contributing/)
|
167
|
-
* [Support Jets](http://rubyonjets.com/
|
166
|
+
* [Contributing](http://rubyonjets.com/docs/more/contributing/)
|
167
|
+
* [Support Jets](http://rubyonjets.com/donate/)
|
168
168
|
* [Example Projects](https://github.com/tongueroo/jets-examples)
|
169
169
|
|
170
170
|
## Learning Content
|
data/jets.gemspec
CHANGED
@@ -54,7 +54,8 @@ Gem::Specification.new do |spec|
|
|
54
54
|
spec.add_dependency "dsl_evaluator", ">= 0.3.0" # for DslEvaluator.print_code
|
55
55
|
spec.add_dependency "gems"
|
56
56
|
spec.add_dependency "hashie"
|
57
|
-
spec.add_dependency "jets-api"
|
57
|
+
spec.add_dependency "jets-api", ">= 0.1.4"
|
58
|
+
spec.add_dependency "jets-git"
|
58
59
|
spec.add_dependency "jets-html-sanitizer"
|
59
60
|
spec.add_dependency "kramdown"
|
60
61
|
spec.add_dependency "memoist"
|
@@ -4,7 +4,7 @@ module Jets::AwsServices
|
|
4
4
|
@@stack_exists_cache = [] # helps with CloudFormation rate limit
|
5
5
|
def stack_exists?(stack_name)
|
6
6
|
return false if Jets.env.test?
|
7
|
-
return true if ENV['
|
7
|
+
return true if ENV['JETS_NO_INTERNET']
|
8
8
|
return true if @@stack_exists_cache.include?(stack_name)
|
9
9
|
|
10
10
|
exist = nil
|
@@ -76,7 +76,7 @@ module Jets::Builders
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def exist_on_s3?(filename)
|
79
|
-
return false if ENV['
|
79
|
+
return false if ENV['JETS_NO_INTERNET']
|
80
80
|
s3_key = "jets/code/#{filename}"
|
81
81
|
begin
|
82
82
|
Jets.logger.debug "Checking s3://#{s3_bucket}/#{s3_key}"
|
@@ -131,6 +131,7 @@ module Jets::Builders
|
|
131
131
|
# We do not want to grab this as part of the live request because it is slow.
|
132
132
|
def store_s3_base_url
|
133
133
|
return if Jets.config.mode == "job"
|
134
|
+
return unless gemfile_include?("sprockets-jets")
|
134
135
|
write_s3_base_url("#{stage_area}/code/config/s3_base_url.txt")
|
135
136
|
end
|
136
137
|
|
@@ -192,9 +193,7 @@ module Jets::Builders
|
|
192
193
|
puts "Skip compiling assets".color(:yellow) # useful for debugging
|
193
194
|
return true
|
194
195
|
end
|
195
|
-
|
196
|
-
return true unless Jets.config.respond_to?(:assets)
|
197
|
-
Jets.config.assets.enable_webpack
|
196
|
+
Jets.config.mode == "job"
|
198
197
|
end
|
199
198
|
|
200
199
|
# Different url for these. Examples:
|
data/lib/jets/cfn/deployment.rb
CHANGED
@@ -13,33 +13,73 @@ module Jets::Cfn
|
|
13
13
|
|
14
14
|
def create
|
15
15
|
Jets.boot # needed since Jets is lazy loaded
|
16
|
-
return if
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
return if disabled?
|
17
|
+
@stack = find_stack(@stack_name)
|
18
|
+
record_deployment if @stack
|
19
|
+
end
|
20
20
|
|
21
|
-
|
21
|
+
def delete
|
22
|
+
Jets.boot # needed since Jets is lazy loaded
|
23
|
+
return if disabled?
|
24
|
+
@stack = find_stack(@stack_name)
|
25
|
+
delete_deployment if @stack
|
22
26
|
end
|
23
27
|
|
24
|
-
def
|
25
|
-
|
26
|
-
resp
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
def delete_deployment
|
29
|
+
resp = Jets::Api::Stack.retrieve("current")
|
30
|
+
return if resp["error"] == "not_found"
|
31
|
+
return unless resp["id"]
|
32
|
+
resp = Jets::Api::Stack.delete(resp["id"])
|
33
|
+
puts resp["message"] # IE: Stack demo-dev deleted
|
34
|
+
resp
|
35
|
+
rescue Jets::Api::RequestError => e
|
36
|
+
puts "WARNING: Unable to delete release and stack. #{e.class}: #{e.message}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def record_deployment
|
40
|
+
params = stack_params.merge(git_info.params)
|
41
|
+
params["message"] = create_message
|
42
|
+
resp = Jets::Api::Release.create(params)
|
43
|
+
# Instead of check_for_error_message!(resp) we want to customize it a bit
|
44
|
+
if resp && resp["error"]
|
45
|
+
$stderr.puts "WARN: There was an error creating the release."
|
46
|
+
$stderr.puts "WARN: #{resp["error"]}"
|
47
|
+
exit 1
|
48
|
+
end
|
33
49
|
puts "Release version: #{resp["version"]}" if resp["version"]
|
34
50
|
resp
|
35
51
|
rescue Jets::Api::RequestError => e
|
36
52
|
puts "WARNING: Unable to create release. #{e.class}: #{e.message}"
|
37
53
|
end
|
38
54
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
55
|
+
def stack_params
|
56
|
+
{
|
57
|
+
stack_arn: @stack.stack_id,
|
58
|
+
stack_status: @stack.stack_status,
|
59
|
+
message: create_message,
|
60
|
+
deploy_user: deploy_user,
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
def deploy_user
|
65
|
+
ENV['JETS_DEPLOY_USER'] || git_info.user.first_name || ENV['USER']
|
66
|
+
end
|
67
|
+
|
68
|
+
def git_info
|
69
|
+
Jets::Git::Info.new(@options)
|
70
|
+
end
|
71
|
+
memoize :git_info
|
72
|
+
|
73
|
+
def create_message
|
74
|
+
if @options[:message]
|
75
|
+
@options[:message][0..255]
|
76
|
+
else
|
77
|
+
@rollback_version ? "Rollback to #{@rollback_version}" : "Deploy"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def disabled?
|
82
|
+
Jets.config.pro.disable || !Jets::Api.token
|
43
83
|
end
|
44
84
|
end
|
45
85
|
end
|
@@ -4,7 +4,7 @@ class Jets::Cfn::Resource::ApiGateway::RestApi
|
|
4
4
|
include Jets::AwsServices
|
5
5
|
|
6
6
|
def get
|
7
|
-
return default if ENV['
|
7
|
+
return default if ENV['JETS_NO_INTERNET']
|
8
8
|
return default unless stack_exists?(parent_stack_name) && api_gateway_exists?
|
9
9
|
|
10
10
|
if changed?
|
@@ -17,7 +17,7 @@ class Jets::Cfn::Resource::ApiGateway::RestApi
|
|
17
17
|
|
18
18
|
def auto_replace_prompt
|
19
19
|
return if ENV['JETS_API_AUTO_REPLACE']
|
20
|
-
return unless
|
20
|
+
return unless Jets::Command.original_cli_command == "deploy"
|
21
21
|
case Jets.config.api.auto_replace
|
22
22
|
when nil
|
23
23
|
puts message.routes_changed
|
@@ -47,13 +47,13 @@ module Jets::Cfn::Resource::S3
|
|
47
47
|
@@name = nil
|
48
48
|
def name
|
49
49
|
return @@name if @@name
|
50
|
-
return "fake-bucket" if ENV['
|
50
|
+
return "fake-bucket" if ENV['JETS_NO_INTERNET'] || ENV['JETS_TEMPLATES']
|
51
51
|
|
52
52
|
resp = nil
|
53
53
|
begin
|
54
54
|
resp = cfn.describe_stacks(stack_name: Jets::Names.parent_stack_name)
|
55
55
|
rescue Aws::CloudFormation::Errors::ValidationError => e
|
56
|
-
if e.message.include?('does not exist') &&
|
56
|
+
if e.message.include?('does not exist') && Jets::Command.original_cli_command == 'build' # jets build
|
57
57
|
return "no-bucket-yet" # for jets build without s3 bucket yet
|
58
58
|
else
|
59
59
|
raise
|
data/lib/jets/command/base.rb
CHANGED
@@ -99,6 +99,11 @@ module Jets
|
|
99
99
|
end
|
100
100
|
|
101
101
|
dispatch(command, args.dup, nil, config)
|
102
|
+
rescue Thor::InvocationError => e
|
103
|
+
puts e.message.color(:red) # message already has ERROR prefix
|
104
|
+
self.full_namespace = full_namespace # store for help. clean:log => log
|
105
|
+
dispatch("help", [], nil, config)
|
106
|
+
exit 1
|
102
107
|
end
|
103
108
|
|
104
109
|
def printing_commands
|
@@ -1,6 +1 @@
|
|
1
|
-
Check if
|
2
|
-
|
3
|
-
# Sources for check for pre-compiled Lambda gems. Checks the list in order.
|
4
|
-
Jets.application.configure do
|
5
|
-
config.gems.source = "https://api.serverlessgems.com/api/v1"
|
6
|
-
end
|
1
|
+
Check if precompiled gems are available from Jets Pro.
|
@@ -7,7 +7,7 @@ This defaults to the controller Lambda function in the `one_lambda_for_all_contr
|
|
7
7
|
|
8
8
|
If you want to follow the logs use the `-f` flag.
|
9
9
|
|
10
|
-
❯ jets logs
|
10
|
+
❯ jets logs -f
|
11
11
|
Tailing logs for /aws/lambda/demo-dev-controller
|
12
12
|
|
13
13
|
If you want to see the production logs:
|
@@ -5,33 +5,15 @@
|
|
5
5
|
+---------+-----------------+--------------+---------+
|
6
6
|
| Version | Status | Released At | Message |
|
7
7
|
+---------+-----------------+--------------+---------+
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| 24 | UPDATE_COMPLETE | 11 hours ago | Deploy |
|
12
|
-
| 23 | DELETE_COMPLETE | 14 hours ago | Deleted |
|
13
|
-
| 22 | UPDATE_COMPLETE | 14 hours ago | Deploy |
|
14
|
-
| 21 | UPDATE_COMPLETE | 14 hours ago | Deploy |
|
15
|
-
| 20 | UPDATE_COMPLETE | 14 hours ago | Deploy |
|
16
|
-
| 19 | DELETE_COMPLETE | 14 hours ago | Deleted |
|
17
|
-
| 18 | UPDATE_COMPLETE | 14 hours ago | Deploy |
|
18
|
-
| 17 | UPDATE_COMPLETE | 17 hours ago | Deploy |
|
19
|
-
| 16 | UPDATE_COMPLETE | 18 hours ago | Deploy |
|
20
|
-
| 15 | UPDATE_COMPLETE | 18 hours ago | Deploy |
|
21
|
-
| 14 | DELETE_COMPLETE | 18 hours ago | Deleted |
|
22
|
-
| 13 | UPDATE_COMPLETE | 19 hours ago | Deploy |
|
23
|
-
| 12 | UPDATE_COMPLETE | 19 hours ago | Deploy |
|
24
|
-
| 11 | UPDATE_COMPLETE | 19 hours ago | Deploy |
|
25
|
-
| 10 | DELETE_COMPLETE | 19 hours ago | Deleted |
|
26
|
-
| 9 | UPDATE_COMPLETE | 21 hours ago | Deploy |
|
27
|
-
| 8 | UPDATE_COMPLETE | 21 hours ago | Deploy |
|
28
|
-
| 7 | DELETE_COMPLETE | 21 hours ago | Deleted |
|
29
|
-
| 6 | UPDATE_COMPLETE | 21 hours ago | Deploy |
|
30
|
-
| 5 | DELETE_COMPLETE | 22 hours ago | Deleted |
|
31
|
-
| 4 | UPDATE_COMPLETE | 22 hours ago | Deploy |
|
32
|
-
| 3 | UPDATE_COMPLETE | 22 hours ago | Deploy |
|
8
|
+
| 3 | UPDATE_COMPLETE | 10 hours ago | Deploy |
|
9
|
+
| 2 | UPDATE_COMPLETE | 18 hours ago | Deploy |
|
10
|
+
| 1 | UPDATE_COMPLETE | 22 hours ago | Deploy |
|
33
11
|
+---------+-----------------+--------------+---------+
|
34
12
|
|
35
13
|
The shown releases are paginated. If you need to see more releases you can use the `--page` option.
|
36
14
|
|
37
15
|
$ jets releases --page 2
|
16
|
+
|
17
|
+
## Other Commands
|
18
|
+
|
19
|
+
releases:info View detailed information for a release
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Jets::Command
|
2
|
+
module RakeDecorate
|
3
|
+
# Decorate this method because this does not get called until runtime.
|
4
|
+
# It's "lazy loaded" so we can avoid the Rails const being defined in general.
|
5
|
+
def [](task_name, scopes=nil)
|
6
|
+
super # => Rake::TaskManager#[]
|
7
|
+
rescue RuntimeError => e
|
8
|
+
# We require dummy/rails since this time because all the rake tasks have been loaded
|
9
|
+
# and we need to load dummy/rails to get the database configurations. Normally,
|
10
|
+
# we do not want to require dummy/rails because it defines the Rails.
|
11
|
+
# However, a "command not found" error, more accurately,
|
12
|
+
# a "rake task not found" error, has already been encountered.
|
13
|
+
# Also:
|
14
|
+
# require "dummy/rails" to prevent another error.
|
15
|
+
# from lib/active_record/railties/databases.rake
|
16
|
+
#
|
17
|
+
# NoMethodError: undefined method `env' for Rails:Module (NoMethodError)
|
18
|
+
# database_configs = ActiveRecord::DatabaseConfigurations.new(databases).configs_for(env_name: Rails.env)
|
19
|
+
#
|
20
|
+
require "jets/overrides/dummy/rails"
|
21
|
+
|
22
|
+
# Original error message from rake is something like this
|
23
|
+
#
|
24
|
+
# Don't know how to build task 'foo:bar' (See the list of available tasks with `jets --tasks`)
|
25
|
+
#
|
26
|
+
# With an ugly backtrace.
|
27
|
+
# We override the error message to be more user friendly.
|
28
|
+
#
|
29
|
+
# All of that in order for
|
30
|
+
# jets foo:bar
|
31
|
+
# to show a pretty error message.
|
32
|
+
$stderr.puts "ERROR: Could not find command: #{task_name.inspect}".color(:red)
|
33
|
+
require "jets/commands/help/help_command"
|
34
|
+
Jets::Command::HelpCommand.new.help
|
35
|
+
exit 1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/jets/command.rb
CHANGED
@@ -17,6 +17,8 @@ module Jets
|
|
17
17
|
|
18
18
|
HELP_MAPPINGS = %w(-h -? --help)
|
19
19
|
|
20
|
+
cattr_accessor :original_cli_command
|
21
|
+
|
20
22
|
class << self
|
21
23
|
def hidden_commands # :nodoc:
|
22
24
|
@hidden_commands ||= []
|
@@ -29,6 +31,7 @@ module Jets
|
|
29
31
|
# Receives a namespace, arguments, and the behavior to invoke the command.
|
30
32
|
def invoke(full_namespace, args = [], **config)
|
31
33
|
namespace = full_namespace = full_namespace.to_s
|
34
|
+
Jets::Command.original_cli_command = full_namespace
|
32
35
|
|
33
36
|
if char = namespace =~ /:(\w+)$/
|
34
37
|
command_name, namespace = $1, namespace.slice(0, char)
|
@@ -47,6 +50,12 @@ module Jets
|
|
47
50
|
if command && command.all_commands[command_name]
|
48
51
|
command.perform(full_namespace, command_name, args, config)
|
49
52
|
else
|
53
|
+
# Decorate the rake [] method in order to rescue the error and print out
|
54
|
+
# a user friendly message. This works to catch rake errors but
|
55
|
+
# unsure why cannot just rescue RuntimeError here.
|
56
|
+
# More details in the RakeDecorate module.
|
57
|
+
require "rake/application"
|
58
|
+
Rake::Application.send(:include, RakeDecorate)
|
50
59
|
args = ["--describe", full_namespace] if HELP_MAPPINGS.include?(args[0])
|
51
60
|
find_by_namespace("rake").perform(full_namespace, args, config)
|
52
61
|
end
|
@@ -89,7 +98,6 @@ module Jets
|
|
89
98
|
commands.each { |command| puts(" #{command}") }
|
90
99
|
end
|
91
100
|
|
92
|
-
private
|
93
101
|
COMMANDS_IN_USAGE = %w(
|
94
102
|
generate
|
95
103
|
console
|
@@ -117,6 +125,7 @@ module Jets
|
|
117
125
|
(visible_commands - COMMANDS_IN_USAGE - PRO_COMMANDS).sort
|
118
126
|
end
|
119
127
|
|
128
|
+
private
|
120
129
|
def command_type # :doc:
|
121
130
|
@command_type ||= "command"
|
122
131
|
end
|
@@ -33,14 +33,13 @@ module Jets::Command
|
|
33
33
|
cfn.delete_stack(stack_name: parent_stack_name)
|
34
34
|
puts "Deleting #{Jets.project_namespace.color(:green)}..."
|
35
35
|
|
36
|
+
stack = find_stack(parent_stack_name)
|
36
37
|
if @options[:wait]
|
37
|
-
stack = find_stack(parent_stack_name)
|
38
38
|
wait_for_stack
|
39
|
-
Jets::Cfn::Deployment.new(stack_name: stack.stack_id, message: "Deleted").create
|
40
39
|
end
|
40
|
+
Jets::Cfn::Deployment.new(stack_name: stack.stack_id).delete
|
41
41
|
|
42
42
|
delete_logs
|
43
|
-
|
44
43
|
puts "Project #{Jets.project_namespace.color(:green)} deleted!"
|
45
44
|
end
|
46
45
|
|
@@ -1,11 +1,27 @@
|
|
1
1
|
module Jets::Command
|
2
2
|
class ReleasesCommand < Base # :nodoc:
|
3
|
-
desc "
|
4
|
-
long_desc Help.text(:
|
3
|
+
desc "releases", "List releases"
|
4
|
+
long_desc Help.text(:releases)
|
5
5
|
paging_options(order: 'desc').call
|
6
|
+
option :sha, desc: "Show release git sha"
|
6
7
|
def perform
|
7
8
|
Release.new(options.merge(paging_params)).list
|
8
9
|
end
|
10
|
+
|
11
|
+
desc "releases:info", "View detailed information for a release"
|
12
|
+
long_desc Help.text(:info)
|
13
|
+
def info(version=nil)
|
14
|
+
if version.nil?
|
15
|
+
puts "ERROR: Must provide a version".color(:red)
|
16
|
+
puts <<~EOL
|
17
|
+
Example:
|
18
|
+
|
19
|
+
jets releases:info 3
|
20
|
+
EOL
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
Release.new(options.merge(version: version)).show
|
24
|
+
end
|
9
25
|
end
|
10
26
|
|
11
27
|
class Release
|
@@ -35,19 +51,26 @@ module Jets::Command
|
|
35
51
|
show_items(data)
|
36
52
|
end
|
37
53
|
rescue Jets::Api::RequestError => e
|
38
|
-
puts "ERROR: Unable to list
|
54
|
+
puts "ERROR: Unable to list releases. #{e.class}: #{e.message}"
|
39
55
|
end
|
40
56
|
|
41
57
|
def show_items(items)
|
42
58
|
presenter = CliFormat::Presenter.new
|
43
|
-
|
59
|
+
header = ["Version", "Status", "Released At", "Message"]
|
60
|
+
header << "Git Sha" if @options[:sha]
|
61
|
+
presenter.header = header
|
44
62
|
items.each do |item|
|
45
63
|
version = item["version"]
|
46
64
|
status = item["stack_status"]
|
47
65
|
released_at = item["pretty_created_at"] || item["created_at"]
|
48
66
|
message = item["message"] || "Deployed"
|
67
|
+
message = message[0..50]
|
49
68
|
|
50
69
|
row = [version, status, format_time(released_at), message]
|
70
|
+
if @options[:sha]
|
71
|
+
sha = item["git_sha"].to_s[0..7] if item["git_sha"]
|
72
|
+
row << sha
|
73
|
+
end
|
51
74
|
presenter.rows << row
|
52
75
|
end
|
53
76
|
presenter.show
|
@@ -66,7 +89,37 @@ module Jets::Command
|
|
66
89
|
resp = Jets::Api::Release.retrieve(version)
|
67
90
|
check_for_error_message!(resp)
|
68
91
|
rescue Jets::Api::RequestError => e
|
69
|
-
puts "ERROR: Unable to get
|
92
|
+
puts "ERROR: Unable to get release. #{e.class}: #{e.message}"
|
93
|
+
end
|
94
|
+
|
95
|
+
def show
|
96
|
+
release = get(@options[:version])
|
97
|
+
release_at = release['pretty_created_at'] || release['created_at']
|
98
|
+
|
99
|
+
data = [
|
100
|
+
["Version", release['version']],
|
101
|
+
["Status", release['stack_status']],
|
102
|
+
["Released At", format_time(release_at)],
|
103
|
+
["Message", release['message']],
|
104
|
+
["User", release['deploy_user']],
|
105
|
+
["Git Branch", release['git_branch']],
|
106
|
+
["Git Sha", release['git_sha']],
|
107
|
+
["Git Message", release['git_message']],
|
108
|
+
["Git Url", release['git_url']],
|
109
|
+
["Git Dirty", release['git_dirty']],
|
110
|
+
["Jets Env", release['jets_env']],
|
111
|
+
["Jets Extra", release['jets_extra']],
|
112
|
+
["Jets Version", release['jets_version']],
|
113
|
+
["Ruby Version", release['ruby_version']],
|
114
|
+
["Region", release['region']],
|
115
|
+
]
|
116
|
+
column1_width = data.map { |row| row[1].nil? ? 0 : row[0].to_s.length }.max
|
117
|
+
column2_width = data.map { |row| row[1].nil? ? 0 : row[1].to_s.length }.max
|
118
|
+
|
119
|
+
puts Jets.project_namespace
|
120
|
+
data.each do |row|
|
121
|
+
puts "#{row[0].ljust(column1_width)} #{row[1]}" unless row[1].nil?
|
122
|
+
end
|
70
123
|
end
|
71
124
|
end
|
72
125
|
end
|
@@ -4,7 +4,7 @@ module Jets::Command
|
|
4
4
|
class RollbackCommand < Base # :nodoc:
|
5
5
|
desc "rollback", "Rollback to a previous release"
|
6
6
|
long_desc Help.text(:rollback)
|
7
|
-
def perform(version
|
7
|
+
def perform(version)
|
8
8
|
Rollback.new(options.merge(version: version)).run
|
9
9
|
end
|
10
10
|
end
|
@@ -15,14 +15,6 @@ module Jets::Command
|
|
15
15
|
def initialize(options={})
|
16
16
|
@options = options
|
17
17
|
@version = options[:version]
|
18
|
-
# Handle more gracefully than the way Jets does it currently
|
19
|
-
if @version.nil?
|
20
|
-
puts <<~EOL
|
21
|
-
ERROR: version required
|
22
|
-
Usage: jets rollback VERSION
|
23
|
-
EOL
|
24
|
-
exit 1
|
25
|
-
end
|
26
18
|
end
|
27
19
|
|
28
20
|
def run
|
data/lib/jets/dotenv/ssm.rb
CHANGED
@@ -37,7 +37,7 @@ class Jets::Dotenv
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def fetch_ssm_value(key, value)
|
40
|
-
return "fake-ssm-value" if ENV['
|
40
|
+
return "fake-ssm-value" if ENV['JETS_NO_INTERNET']
|
41
41
|
|
42
42
|
name = ssm_name(key, value)
|
43
43
|
response = ssm.get_parameter(name: name, with_decryption: true)
|
@@ -3,7 +3,7 @@ Jets.application.configure do
|
|
3
3
|
|
4
4
|
config.cache_classes = false
|
5
5
|
config.eager_load = false
|
6
|
-
config.logging.event = false #
|
6
|
+
config.logging.event = false # can be useful for CloudWatch
|
7
7
|
|
8
8
|
<%- unless options[:mode] == 'job' -%>
|
9
9
|
# Show full error reports.
|
@@ -2,7 +2,7 @@ Jets.application.configure do
|
|
2
2
|
config.cache_classes = true
|
3
3
|
config.eager_load = true
|
4
4
|
config.log_level = :info
|
5
|
-
config.logging.event =
|
5
|
+
config.logging.event = false # can be useful for CloudWatch
|
6
6
|
|
7
7
|
<%- unless options[:mode] == 'job' -%>
|
8
8
|
config.consider_all_requests_local = false
|
data/lib/jets/job/base.rb
CHANGED
@@ -38,7 +38,7 @@ module Jets::Job
|
|
38
38
|
call = Jets::Commands::Call::Caller.new(function_name, JSON.dump(event), invocation_type: "Event")
|
39
39
|
call.run
|
40
40
|
else
|
41
|
-
|
41
|
+
Jets.logger.info "INFO: Not on AWS Lambda. In local mode perform_later executes the job with perform_now instead."
|
42
42
|
perform_now(meth, event, context)
|
43
43
|
end
|
44
44
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Jets::Job::Dsl
|
2
2
|
module DynamodbEvent
|
3
3
|
def dynamodb_event(table_name_without_namespace, options={})
|
4
|
-
return if ENV['
|
4
|
+
return if ENV['JETS_NO_INTERNET'] # Disable during build since jets build tries to init this
|
5
5
|
|
6
6
|
table_name = add_dynamodb_table_namespace(table_name_without_namespace)
|
7
7
|
stream_arn = full_dynamodb_stream_arn(table_name)
|
data/lib/jets/version.rb
CHANGED
data/lib/jets.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.1
|
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-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -376,6 +376,20 @@ dependencies:
|
|
376
376
|
version: '0'
|
377
377
|
- !ruby/object:Gem::Dependency
|
378
378
|
name: jets-api
|
379
|
+
requirement: !ruby/object:Gem::Requirement
|
380
|
+
requirements:
|
381
|
+
- - ">="
|
382
|
+
- !ruby/object:Gem::Version
|
383
|
+
version: 0.1.4
|
384
|
+
type: :runtime
|
385
|
+
prerelease: false
|
386
|
+
version_requirements: !ruby/object:Gem::Requirement
|
387
|
+
requirements:
|
388
|
+
- - ">="
|
389
|
+
- !ruby/object:Gem::Version
|
390
|
+
version: 0.1.4
|
391
|
+
- !ruby/object:Gem::Dependency
|
392
|
+
name: jets-git
|
379
393
|
requirement: !ruby/object:Gem::Requirement
|
380
394
|
requirements:
|
381
395
|
- - ">="
|
@@ -859,6 +873,7 @@ files:
|
|
859
873
|
- lib/jets/command/help/upgrade.md
|
860
874
|
- lib/jets/command/help/url.md
|
861
875
|
- lib/jets/command/helpers/editor.rb
|
876
|
+
- lib/jets/command/rake_decorate.rb
|
862
877
|
- lib/jets/commands.rb
|
863
878
|
- lib/jets/commands/application/application_command.rb
|
864
879
|
- lib/jets/commands/build/build_command.rb
|
@@ -964,6 +979,7 @@ files:
|
|
964
979
|
- lib/jets/generators/overrides/app/helpers.rb
|
965
980
|
- lib/jets/generators/overrides/app/templates/.env
|
966
981
|
- lib/jets/generators/overrides/app/templates/.gitignore.tt
|
982
|
+
- lib/jets/generators/overrides/app/templates/.jetsignore
|
967
983
|
- lib/jets/generators/overrides/app/templates/.rspec
|
968
984
|
- lib/jets/generators/overrides/app/templates/Gemfile.tt
|
969
985
|
- lib/jets/generators/overrides/app/templates/README.md
|