jets 0.6.7 → 0.6.8
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/.codebuild/README.md +12 -1
- data/.codebuild/integration.sh +23 -5
- data/.gitignore +1 -0
- data/CHANGELOG.md +5 -1
- data/Gemfile.lock +5 -1
- data/jets.gemspec +1 -0
- data/lib/jets/aws_services.rb +5 -0
- data/lib/jets/commands.rb +1 -0
- data/lib/jets/commands/clean.rb +23 -0
- data/lib/jets/commands/clean/base.rb +24 -0
- data/lib/jets/commands/clean/build.rb +13 -0
- data/lib/jets/commands/clean/log.rb +89 -0
- data/lib/jets/commands/delete.rb +9 -0
- data/lib/jets/commands/help/clean/build.md +5 -0
- data/lib/jets/commands/help/clean/log.md +5 -0
- data/lib/jets/version.rb +1 -1
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb8be5eb8194cd0e2d6ac3f718e4ecdb2a4a14ef785b513e32bb097a9402e417
|
4
|
+
data.tar.gz: e70d4f88f3e0b8701a16c2115cdc5ad8a463447ba45ffc6adcf32e494a431690
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eef24ef7e8533bab5e98b3ca06205f219ec46ad7e0a8ba84cdf9a687ee9122253b17942e661990b2fb82be4aa28501076eae9626b8aea4958b2347241ca7a75f
|
7
|
+
data.tar.gz: 98f1272457a69bc6ae50f093f32c2f130c3ca32dbf0235fbf82bd449612f2001edc3faab2f0957c7df7dd7c823548806d4329a62f1e11d9fa1346ca48d66c267
|
data/.codebuild/README.md
CHANGED
@@ -50,8 +50,19 @@ If you want to manually build the Docker base image. Run:
|
|
50
50
|
-e "IMAGE_NAME=tongueroo/jets:base" \
|
51
51
|
-e "ARTIFACTS=/tmp/artifacts" \
|
52
52
|
-e "SOURCE=/home/ec2-user/environment/jets" \
|
53
|
+
-e "DB_USER=$DB_USER" \
|
54
|
+
-e "DB_PASS=$DB_PASS" \
|
55
|
+
-e "DB_HOST=$DB_HOST" \
|
53
56
|
amazon/aws-codebuild-local
|
54
57
|
|
55
|
-
##
|
58
|
+
## Run ingreration.sh
|
56
59
|
|
60
|
+
Can run the integration.sh test locally by running:
|
57
61
|
|
62
|
+
export DB_NAME=demo
|
63
|
+
export DB_USER=dbuser
|
64
|
+
export DB_PASS=dbpass
|
65
|
+
export DB_HOST=rdshost
|
66
|
+
.codebuild/integration.sh
|
67
|
+
|
68
|
+
Note, you'll need to use a real RDS db instance. Make sure DATABASE_URL is not set, this is working with the DB_* vars.
|
data/.codebuild/integration.sh
CHANGED
@@ -1,20 +1,37 @@
|
|
1
1
|
#!/bin/bash -exu
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
# on codebuild make sure we use the bin/jets that was checked out
|
4
|
+
set +u
|
5
|
+
if [ -n "$CODEBUILD_SRC_DIR" ]; then
|
6
|
+
cp .codebuild/bin/jets /usr/local/bin/jets
|
7
|
+
chmod a+x /usr/local/bin/jets
|
8
|
+
export PATH=/usr/local/bin:$PATH
|
9
|
+
which jets
|
10
|
+
fi
|
6
11
|
|
7
|
-
|
12
|
+
# Locally set the CODEBUILD_SRC_DIR to make script simpler
|
13
|
+
# Do this before the cd-ing into the newly created directory.
|
14
|
+
if [ -z $CODEBUILD_SRC_DIR ]; then
|
15
|
+
CODEBUILD_SRC_DIR=$(pwd)
|
16
|
+
fi
|
17
|
+
set -u
|
8
18
|
|
9
19
|
APP_NAME=demo$(date +%s)
|
10
20
|
jets new $APP_NAME # jets new runs bundle and webpacker:install
|
11
21
|
cd $APP_NAME
|
12
22
|
|
13
|
-
cat
|
23
|
+
cat >.env.development <<EOL
|
24
|
+
DB_NAME=$DB_NAME
|
14
25
|
DB_USER=$DB_USER
|
15
26
|
DB_PASS=$DB_PASS
|
16
27
|
DB_HOST=$DB_HOST
|
17
28
|
EOL
|
29
|
+
# IE: replace demo with demo1535227161 in case locally using demo and forget to set
|
30
|
+
perl -i -pe "s/DB_NAME=demo/DB_NAME=${APP_NAME}_dev/" .env.development
|
31
|
+
# Make sure database env vars matches whats in the file
|
32
|
+
eval $(cat .env.development | sed 's/^/export /')
|
33
|
+
# Make sure that nothing is .env.development.remote, dont want to use it for this case
|
34
|
+
cp /dev/null .env.development.remote
|
18
35
|
|
19
36
|
jets generate scaffold Post title:string
|
20
37
|
# The DB_ environment variables are set up in the circleci environment variables
|
@@ -42,6 +59,7 @@ cat > jets.postman_environment.json <<EOL
|
|
42
59
|
"_postman_exported_using": "Postman/6.2.3"
|
43
60
|
}
|
44
61
|
EOL
|
62
|
+
|
45
63
|
cp $CODEBUILD_SRC_DIR/.codebuild/jets.postman_collection.json .
|
46
64
|
|
47
65
|
npm install -g newman
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
|
-
This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
4
|
+
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
5
|
+
|
6
|
+
## [0.6.8]
|
7
|
+
- add jets clean:log and clean:build commands pull request #17
|
8
|
+
- allow integration.sh test script to run locally
|
5
9
|
|
6
10
|
## [0.6.7]
|
7
11
|
- eager load jets lib also, pull request #16
|
data/Gemfile.lock
CHANGED
@@ -11,12 +11,13 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
jets (0.6.
|
14
|
+
jets (0.6.8)
|
15
15
|
actionpack (>= 5.2.1)
|
16
16
|
actionview (>= 5.2.1)
|
17
17
|
activerecord (>= 5.2.1)
|
18
18
|
activesupport (>= 5.2.1)
|
19
19
|
aws-sdk-cloudformation
|
20
|
+
aws-sdk-cloudwatchlogs
|
20
21
|
aws-sdk-dynamodb
|
21
22
|
aws-sdk-lambda
|
22
23
|
aws-sdk-s3
|
@@ -67,6 +68,9 @@ GEM
|
|
67
68
|
aws-sdk-cloudformation (1.6.0)
|
68
69
|
aws-sdk-core (~> 3)
|
69
70
|
aws-sigv4 (~> 1.0)
|
71
|
+
aws-sdk-cloudwatchlogs (1.5.0)
|
72
|
+
aws-sdk-core (~> 3)
|
73
|
+
aws-sigv4 (~> 1.0)
|
70
74
|
aws-sdk-core (3.24.1)
|
71
75
|
aws-eventstream (~> 1.0)
|
72
76
|
aws-partitions (~> 1.0)
|
data/jets.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency "recursive-open-struct"
|
37
37
|
spec.add_dependency "aws-sdk-s3"
|
38
38
|
spec.add_dependency "aws-sdk-cloudformation"
|
39
|
+
spec.add_dependency "aws-sdk-cloudwatchlogs"
|
39
40
|
spec.add_dependency "aws-sdk-dynamodb"
|
40
41
|
spec.add_dependency "aws-sdk-lambda"
|
41
42
|
spec.add_dependency "kramdown"
|
data/lib/jets/aws_services.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "aws-sdk-s3"
|
2
2
|
require "aws-sdk-cloudformation"
|
3
|
+
require "aws-sdk-cloudwatchlogs"
|
3
4
|
require "aws-sdk-lambda"
|
4
5
|
require "aws-sdk-sts"
|
5
6
|
|
@@ -24,6 +25,10 @@ module Jets::AwsServices
|
|
24
25
|
@sts ||= Aws::STS::Client.new
|
25
26
|
end
|
26
27
|
|
28
|
+
def logs
|
29
|
+
@logs ||= Aws::CloudWatchLogs::Client.new
|
30
|
+
end
|
31
|
+
|
27
32
|
def stack_exists?(stack_name)
|
28
33
|
return false if ENV['TEST']
|
29
34
|
|
data/lib/jets/commands.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Jets::Commands
|
2
|
+
class Clean < Jets::Commands::Base
|
3
|
+
autoload :Base, 'jets/commands/clean/base'
|
4
|
+
autoload :Log, 'jets/commands/clean/log'
|
5
|
+
autoload :Build, 'jets/commands/clean/build'
|
6
|
+
|
7
|
+
class_option :noop, type: :boolean, desc: "noop or dry-run mode"
|
8
|
+
class_option :mute, type: :boolean, desc: "mute output"
|
9
|
+
class_option :sure, type: :boolean, desc: "bypass are you sure prompt"
|
10
|
+
|
11
|
+
desc "log", "Cleans CloudWatch log groups assocated with app"
|
12
|
+
long_desc Help.text('clean:log')
|
13
|
+
def log
|
14
|
+
Log.new(options).clean
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "build", "Cleans jets build"
|
18
|
+
long_desc Help.text('clean:build')
|
19
|
+
def build
|
20
|
+
Build.new(options).clean
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Jets::Commands::Clean
|
2
|
+
class Base
|
3
|
+
def initialize(options={})
|
4
|
+
@options = options
|
5
|
+
end
|
6
|
+
|
7
|
+
private
|
8
|
+
def say(message)
|
9
|
+
prefix = 'NOOP ' if @options[:noop]
|
10
|
+
puts "#{prefix}#{message}" unless @options[:mute]
|
11
|
+
end
|
12
|
+
|
13
|
+
def are_you_sure?(message)
|
14
|
+
return true if @options[:sure]
|
15
|
+
|
16
|
+
puts "Are you sure that you want to #{message}? (y/N)"
|
17
|
+
yes = $stdin.gets.strip
|
18
|
+
unless yes =~ /^y/
|
19
|
+
puts "Phew that was close!"
|
20
|
+
exit 0
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# The thing that limits this implementation is that there needs to be at least
|
2
|
+
# one lambda function created from an internal jets function. Example:
|
3
|
+
#
|
4
|
+
# /aws/lambda/demo-dev-2-jets-preheat_job-warm
|
5
|
+
# /aws/lambda/demo-dev-2-jets-public_controller-show
|
6
|
+
#
|
7
|
+
# We're doing this because JETS_ENV_EXTRA environments can create additional matching
|
8
|
+
# log groups and we don't want to overly-aggressively delete them.
|
9
|
+
#
|
10
|
+
# The `keep_prefixes(log_group_names)` method calcuates the log groups to keep.
|
11
|
+
class Jets::Commands::Clean
|
12
|
+
class Log < Base
|
13
|
+
extend Memoist
|
14
|
+
include Jets::AwsServices
|
15
|
+
|
16
|
+
def clean
|
17
|
+
are_you_sure?("delete CloudWatch logs")
|
18
|
+
|
19
|
+
say "Removing CloudWatch logs for #{prefix_guess}..."
|
20
|
+
log_groups.each do |g|
|
21
|
+
next if keep_log_group?(g.log_group_name)
|
22
|
+
logs.delete_log_group(log_group_name: g.log_group_name) unless @options[:noop]
|
23
|
+
say "Removed log group: #{g.log_group_name}"
|
24
|
+
end
|
25
|
+
say "Removed CloudWatch logs for #{prefix_guess}"
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def prefix_guess
|
30
|
+
Jets::Naming.parent_stack_name
|
31
|
+
end
|
32
|
+
|
33
|
+
def log_groups
|
34
|
+
groups, next_token = [], true
|
35
|
+
while next_token
|
36
|
+
next_token = nil if next_token == true # just at start the loop
|
37
|
+
resp = logs.describe_log_groups(
|
38
|
+
log_group_name_prefix: "/aws/lambda/#{prefix_guess}-",
|
39
|
+
next_token: next_token,
|
40
|
+
)
|
41
|
+
groups += resp.log_groups
|
42
|
+
next_token = resp.next_token
|
43
|
+
end
|
44
|
+
groups
|
45
|
+
end
|
46
|
+
memoize :log_groups
|
47
|
+
|
48
|
+
def log_group_names
|
49
|
+
log_groups.map(&:log_group_name)
|
50
|
+
end
|
51
|
+
|
52
|
+
def all_prefixes(log_group_names)
|
53
|
+
log_prefixes(log_group_names)
|
54
|
+
end
|
55
|
+
memoize :all_prefixes
|
56
|
+
|
57
|
+
# Check for the prefixes to keep. The slightly tricky thing to watch for is
|
58
|
+
# for the prefix matching addiitonal log groups that belong to other
|
59
|
+
# JETS_ENV_EXTRA=xxx created environments.
|
60
|
+
#
|
61
|
+
# We find and store the prefixes to keep so we don't over aggressively delete
|
62
|
+
# log groups.
|
63
|
+
def keep_prefixes(log_group_names)
|
64
|
+
names = log_group_names.reject do |name|
|
65
|
+
name =~ %r{/aws/lambda/#{prefix_guess}-jets}
|
66
|
+
end
|
67
|
+
log_prefixes(names)
|
68
|
+
end
|
69
|
+
memoize :keep_prefixes
|
70
|
+
|
71
|
+
# Strips -jets.* from the full log group name to leave only the prefix behind
|
72
|
+
def log_prefixes(names)
|
73
|
+
names = names.select do |name|
|
74
|
+
name.match(Regexp.new("#{prefix_guess}-.*jets"))
|
75
|
+
end
|
76
|
+
names.map do |name|
|
77
|
+
name.sub(/-jets.*/,'')
|
78
|
+
end.uniq.sort
|
79
|
+
end
|
80
|
+
|
81
|
+
# Check if it is safe to delete the log group
|
82
|
+
def keep_log_group?(log_group_name)
|
83
|
+
keep_prefixes = keep_prefixes(log_group_names)
|
84
|
+
!!keep_prefixes.detect do |keep_prefix|
|
85
|
+
log_group_name =~ Regexp.new(keep_prefix)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/lib/jets/commands/delete.rb
CHANGED
@@ -23,6 +23,9 @@ class Jets::Commands::Delete
|
|
23
23
|
puts "Deleting #{Jets.config.project_namespace.colorize(:green)}..."
|
24
24
|
|
25
25
|
wait_for_stack if @options[:wait]
|
26
|
+
|
27
|
+
delete_logs
|
28
|
+
|
26
29
|
puts "Project #{Jets.config.project_namespace.colorize(:green)} deleted!"
|
27
30
|
end
|
28
31
|
|
@@ -34,6 +37,12 @@ class Jets::Commands::Delete
|
|
34
37
|
puts "Time took for deletion: #{status.pretty_time(took).green}."
|
35
38
|
end
|
36
39
|
|
40
|
+
def delete_logs
|
41
|
+
puts "Deleting CloudWatch logs"
|
42
|
+
log = Jets::Commands::Clean::Log.new(mute: true, sure: true)
|
43
|
+
log.clean
|
44
|
+
end
|
45
|
+
|
37
46
|
def confirm_project_exists
|
38
47
|
begin
|
39
48
|
resp = cfn.describe_stacks(stack_name: parent_stack_name)
|
@@ -0,0 +1,5 @@
|
|
1
|
+
Removes the build files that jets creates. Essentially, deletes `/tmp/jets`. This will remove all build files for all jets projects. This is safe as jets uses `/tmp/jets` merely as a cache to speed up incrementally builds. Cleaning this out can clean up cruft in the `/tmp/jets` directory that builds over time.
|
2
|
+
|
3
|
+
## Example
|
4
|
+
|
5
|
+
jets clean:build
|
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.6.
|
4
|
+
version: 0.6.8
|
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-08-
|
11
|
+
date: 2018-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: aws-sdk-cloudwatchlogs
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: aws-sdk-dynamodb
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -461,6 +475,10 @@ files:
|
|
461
475
|
- lib/jets/commands/call/autoload_guesser.rb
|
462
476
|
- lib/jets/commands/call/base_guesser.rb
|
463
477
|
- lib/jets/commands/call/guesser.rb
|
478
|
+
- lib/jets/commands/clean.rb
|
479
|
+
- lib/jets/commands/clean/base.rb
|
480
|
+
- lib/jets/commands/clean/build.rb
|
481
|
+
- lib/jets/commands/clean/log.rb
|
464
482
|
- lib/jets/commands/console.rb
|
465
483
|
- lib/jets/commands/db.rb
|
466
484
|
- lib/jets/commands/db/environment-task.rake
|
@@ -474,6 +492,8 @@ files:
|
|
474
492
|
- lib/jets/commands/help.rb
|
475
493
|
- lib/jets/commands/help/build.md
|
476
494
|
- lib/jets/commands/help/call.md
|
495
|
+
- lib/jets/commands/help/clean/build.md
|
496
|
+
- lib/jets/commands/help/clean/log.md
|
477
497
|
- lib/jets/commands/help/console.md
|
478
498
|
- lib/jets/commands/help/db/generate.md
|
479
499
|
- lib/jets/commands/help/dbconsole.md
|