gantree 0.6.12 → 0.6.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -0
- data/.ruby-version +1 -1
- data/Makefile +27 -0
- data/README.md +25 -0
- data/Rakefile +100 -2
- data/lib/gantree/base.rb +36 -11
- data/lib/gantree/deploy_version.rb +9 -1
- data/lib/gantree/version.rb +1 -1
- data/packaging/bundler-config +3 -0
- data/packaging/wrapper.sh +14 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50b355b94e1db6af77bba9fe524c4a27e3afd233
|
4
|
+
data.tar.gz: 0a40a6e40065c15129cb7e2006b3129604af2c3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d9c3adbf26e1aab68b11dcceb7510b13c7b95caa344b2e1b303e6df7e5f74cffcca571e2352cc3a95cf26dc46a30186aa640f429cee429644edd9b35eea38bb
|
7
|
+
data.tar.gz: 71bc1db480b53accdd87b128c9b4c2806a41368bb186c42bf9fcc2ef14a175e8e34de3462bb3de72481ac0e55852162aa749bb63293441c5b7826bfbb5b7569d
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.5
|
data/Makefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
VERSION := 0.6.17
|
2
|
+
|
3
|
+
# Change this variable to your organisation s3 bucket
|
4
|
+
S3_BUCKET := s3://br-jenkins/gantree
|
5
|
+
|
6
|
+
all: build
|
7
|
+
|
8
|
+
version:
|
9
|
+
@echo "${VERSION}"
|
10
|
+
|
11
|
+
build:
|
12
|
+
gem build gantree.gemspec
|
13
|
+
|
14
|
+
install:
|
15
|
+
gem install --local gantree-${VERSION}.gem
|
16
|
+
|
17
|
+
linux:
|
18
|
+
#docker run -ti --rm -v `pwd`:/workspace -w /workspace ruby:2.1.5 /bin/bash -c "bundle install && bundle exec rake package:linux:x86_64"
|
19
|
+
@echo "=> push latest version linux binary to : ${S3_BUCKET}"
|
20
|
+
aws s3 cp ./gantree-${VERSION}-linux-x86_64.tar.gz ${S3_BUCKET}/ --sse AES256 --acl public-read
|
21
|
+
|
22
|
+
osx:
|
23
|
+
docker run -ti --rm -v `pwd`:/workspace -w /workspace ruby:2.1.5 /bin/bash -c "bundle install && bundle exec rake package:osx"
|
24
|
+
|
25
|
+
clean:
|
26
|
+
rm -rf gantree-${VERSION}-*.tar.gz
|
27
|
+
rm -rf gantree-${VERSION}.gem
|
data/README.md
CHANGED
@@ -19,6 +19,14 @@ This tool is intended to help you setup a Dockerrun.aws.json which allows you to
|
|
19
19
|
### Prerequisites
|
20
20
|
You need to have your AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables set in order to use the tool as well as the proper aws permissions for Elastic Beanstalk, and S3 access.
|
21
21
|
|
22
|
+
Note : For gantree versions >= 0.6.14, configuration of AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables is not necessary if running on an instance with IAM Roles enabled.
|
23
|
+
|
24
|
+
To check if your EC2 has iam role or not, run below command.
|
25
|
+
|
26
|
+
```
|
27
|
+
curl http://169.254.169.254/latest/meta-data/iam/info/
|
28
|
+
```
|
29
|
+
|
22
30
|
*Install docker for MAC OSX*
|
23
31
|
https://docs.docker.com/installation/mac/
|
24
32
|
|
@@ -184,6 +192,23 @@ PostgreSQL: ```gantree create your_app_name --rds pg```
|
|
184
192
|
|
185
193
|
Mysql: ```gantree create your_app_name --rds msql```
|
186
194
|
|
195
|
+
## Traveling Ruby :
|
196
|
+
|
197
|
+
You can now compile this into a tarball and distribute.
|
198
|
+
|
199
|
+
#### To generate tarball & push to s3.ß
|
200
|
+
```
|
201
|
+
# Change below variable in Makefile before you run below command
|
202
|
+
S3_BUCKET := s3://<YOUR_AWS_BUCKET>
|
203
|
+
make clean && make linux
|
204
|
+
```
|
205
|
+
#### To use gantree binary
|
206
|
+
```
|
207
|
+
aws s3 cp s3://<your_bucket>/gantree-0.6.15-linux-x86_64.tar.gz .
|
208
|
+
tar -xf gantree-0.6.15-linux-x86_64.tar.gz -C /opt
|
209
|
+
ln -s /opt/gantree-0.6.15-linux-x86_64/gantree /usr/bin/gantree
|
210
|
+
```
|
211
|
+
|
187
212
|
## TODO:
|
188
213
|
|
189
214
|
#### What if you want a cdn behind each of your generated applications
|
data/Rakefile
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
require 'gantree/version'
|
5
|
+
|
6
|
+
PACKAGE_NAME = "gantree"
|
7
|
+
VERSION = Gantree::VERSION
|
8
|
+
TRAVELING_RUBY_VERSION = "20150210-2.1.5"
|
3
9
|
|
4
10
|
task :default => :spec
|
5
11
|
|
@@ -20,3 +26,95 @@ namespace :clean do
|
|
20
26
|
FileUtils.rm_rf('spec/fixtures/vcr_cassettes')
|
21
27
|
end
|
22
28
|
end
|
29
|
+
|
30
|
+
|
31
|
+
namespace :package do
|
32
|
+
namespace :linux do
|
33
|
+
desc "Package your app for Linux x86"
|
34
|
+
task :x86 => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz"] do
|
35
|
+
create_package("linux-x86")
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Package your app for Linux x86_64"
|
39
|
+
task :x86_64 => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz"] do
|
40
|
+
create_package("linux-x86_64")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "Package your app for OS X"
|
45
|
+
task :osx => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz"] do
|
46
|
+
create_package("osx")
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Install gems to local directory"
|
50
|
+
task :bundle_install do
|
51
|
+
if RUBY_VERSION !~ /^2\.1\./
|
52
|
+
abort "You can only 'bundle install' using Ruby 2.1, because that's what Traveling Ruby uses."
|
53
|
+
end
|
54
|
+
sh "rm -rf packaging/tmp"
|
55
|
+
sh "mkdir packaging/tmp"
|
56
|
+
sh "cp Gemfile Gemfile.lock packaging/tmp/"
|
57
|
+
Bundler.with_clean_env do
|
58
|
+
sh "cd packaging/tmp && env BUNDLE_IGNORE_CONFIG=1 bundle install --path ../vendor --without development"
|
59
|
+
end
|
60
|
+
sh "rm -rf packaging/tmp"
|
61
|
+
sh "rm -f packaging/vendor/*/*/cache/*"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz" do
|
66
|
+
download_runtime("linux-x86")
|
67
|
+
end
|
68
|
+
|
69
|
+
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz" do
|
70
|
+
download_runtime("linux-x86_64")
|
71
|
+
end
|
72
|
+
|
73
|
+
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz" do
|
74
|
+
download_runtime("osx")
|
75
|
+
end
|
76
|
+
|
77
|
+
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx-nokogiri-1.6.5.tar.gz" do
|
78
|
+
download_native_extension("osx", "nokogiri-1.6.5")
|
79
|
+
end
|
80
|
+
|
81
|
+
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86-nokogiri-1.6.5.tar.gz" do
|
82
|
+
download_native_extension("linux-x86", "nokogiri-1.6.5")
|
83
|
+
end
|
84
|
+
|
85
|
+
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64-nokogiri-1.6.5.tar.gz" do
|
86
|
+
download_native_extension("linux-x86_64", "nokogiri-1.6.5")
|
87
|
+
end
|
88
|
+
|
89
|
+
def download_runtime(target)
|
90
|
+
sh "cd packaging && curl -L -O --fail " +
|
91
|
+
"https://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
|
92
|
+
end
|
93
|
+
|
94
|
+
def download_native_extension(target, gem_name_and_version)
|
95
|
+
sh "curl -L --fail -o packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}-#{gem_name_and_version}.tar.gz " +
|
96
|
+
"https://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-gems-#{TRAVELING_RUBY_VERSION}-#{target}/#{gem_name_and_version}.tar.gz"
|
97
|
+
end
|
98
|
+
|
99
|
+
def create_package(target)
|
100
|
+
package_dir = "#{PACKAGE_NAME}-#{VERSION}-#{target}"
|
101
|
+
sh "rm -rf #{package_dir}"
|
102
|
+
sh "mkdir #{package_dir}"
|
103
|
+
sh "mkdir -p #{package_dir}/app/bin"
|
104
|
+
sh "mkdir -p #{package_dir}/lib/app"
|
105
|
+
sh "mkdir #{package_dir}/lib/ruby"
|
106
|
+
sh "mkdir #{package_dir}/bin"
|
107
|
+
sh "tar -xzf packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz -C #{package_dir}/lib/ruby"
|
108
|
+
sh "cp packaging/wrapper.sh #{package_dir}/gantree"
|
109
|
+
sh "chmod +x #{package_dir}/gantree"
|
110
|
+
sh "cp -pR packaging/vendor #{package_dir}/lib/"
|
111
|
+
sh "cp Gemfile Gemfile.lock #{package_dir}/lib/vendor/"
|
112
|
+
sh "mkdir #{package_dir}/lib/vendor/.bundle"
|
113
|
+
sh "cp packaging/bundler-config #{package_dir}/lib/vendor/.bundle/config"
|
114
|
+
sh "cp bin/gantree #{package_dir}/app/bin/gantree"
|
115
|
+
sh "cp -a lib #{package_dir}/app"
|
116
|
+
if !ENV['DIR_ONLY']
|
117
|
+
sh "tar -czf #{package_dir}.tar.gz #{package_dir}"
|
118
|
+
sh "rm -rf #{package_dir}"
|
119
|
+
end
|
120
|
+
end
|
data/lib/gantree/base.rb
CHANGED
@@ -2,13 +2,34 @@ require "colorize"
|
|
2
2
|
require 'librato/metrics'
|
3
3
|
require 'bigdecimal'
|
4
4
|
require 'bigdecimal/util'
|
5
|
+
require 'net/http'
|
6
|
+
|
5
7
|
module Gantree
|
6
8
|
class Base
|
7
9
|
def check_credentials
|
8
|
-
|
9
|
-
|
10
|
+
timeout = false
|
11
|
+
|
12
|
+
url = URI.parse("http://169.254.169.254/latest/meta-data/iam/info/")
|
13
|
+
|
14
|
+
http = Net::HTTP.new(url.host, url.port)
|
15
|
+
|
16
|
+
http.read_timeout = 3
|
17
|
+
http.open_timeout = 3
|
18
|
+
|
19
|
+
begin
|
20
|
+
resp = http.start() { |http| http.get(url.path) }.code
|
21
|
+
rescue Net::OpenTimeout
|
22
|
+
timeout = true
|
23
|
+
end
|
24
|
+
|
25
|
+
if timeout == false && resp == '200'
|
26
|
+
puts "Using IAM Role".green
|
27
|
+
else
|
28
|
+
raise "Please set your AWS Environment Variables" unless ENV['AWS_SECRET_ACCESS_KEY']
|
29
|
+
raise "Please set your AWS Environment Variables" unless ENV['AWS_ACCESS_KEY_ID']
|
30
|
+
end
|
10
31
|
end
|
11
|
-
|
32
|
+
|
12
33
|
def self.check_for_updates opts
|
13
34
|
puts opts.inspect
|
14
35
|
enabled = opts[:auto_updates]
|
@@ -19,8 +40,8 @@ module Gantree
|
|
19
40
|
puts "Auto updates disabled".light_blue if !enabled
|
20
41
|
puts "Updating from #{current_version} to #{latest_version}...".green
|
21
42
|
if current_version == latest_version && enabled
|
22
|
-
system("gem update gantree --force")
|
23
|
-
else
|
43
|
+
system("gem update gantree --force")
|
44
|
+
else
|
24
45
|
puts "gem already up to date".light_blue
|
25
46
|
end
|
26
47
|
update_configuration(opts[:auto_configure]) if opts[:auto_configure]
|
@@ -42,10 +63,14 @@ module Gantree
|
|
42
63
|
end
|
43
64
|
|
44
65
|
def set_aws_keys
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
66
|
+
unless ENV['AWS_ACCESS_KEY_ID'] == nil && ENV['AWS_SECRET_ACCESS_KEY'] == nil
|
67
|
+
AWS.config(
|
68
|
+
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
|
69
|
+
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
|
70
|
+
)
|
71
|
+
else
|
72
|
+
AWS.config(:credential_provider => AWS::Core::CredentialProviders::EC2Provider.new)
|
73
|
+
end
|
49
74
|
end
|
50
75
|
|
51
76
|
def s3
|
@@ -78,7 +103,7 @@ module Gantree
|
|
78
103
|
raise "Please Set Envinronment Name with -e"
|
79
104
|
end
|
80
105
|
end
|
81
|
-
|
106
|
+
|
82
107
|
def authenticate_librato
|
83
108
|
if @options[:librato]
|
84
109
|
Librato::Metrics.authenticate @options[:librato][:email], @options[:librato][:token]
|
@@ -126,7 +151,7 @@ module Gantree
|
|
126
151
|
puts "uploading cfn templates to #{@options[:cfn_bucket]}/#{@options[:stack_name]}"
|
127
152
|
else
|
128
153
|
puts "creating bucket #{@options[:cfn_bucket]}/#{@options[:stack_name]} to upload templates"
|
129
|
-
s3.buckets.create(bucket_name)
|
154
|
+
s3.buckets.create(bucket_name)
|
130
155
|
end
|
131
156
|
end
|
132
157
|
|
@@ -36,7 +36,15 @@ module Gantree
|
|
36
36
|
|
37
37
|
def set_tag_to_deploy
|
38
38
|
image = docker["Image"]["Name"]
|
39
|
-
image.
|
39
|
+
token = image.split(":")
|
40
|
+
if token.length == 3
|
41
|
+
image = token[0] + (":") + token[1] + ":#{@options[:tag]}"
|
42
|
+
docker["Image"]["Name"] = image
|
43
|
+
elsif token.length == 2
|
44
|
+
image.gsub!(/:(.*)$/, ":#{@options[:tag]}")
|
45
|
+
else
|
46
|
+
puts "Too many ':'".yellow
|
47
|
+
end
|
40
48
|
IO.write("/tmp/#{@dockerrun_file}", JSON.pretty_generate(docker))
|
41
49
|
end
|
42
50
|
|
data/lib/gantree/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
# Figure out where this script is located.
|
5
|
+
SELFDIR="`readlink -f /usr/bin/gantree`"
|
6
|
+
SELFDIR=`dirname $SELFDIR`
|
7
|
+
|
8
|
+
# Tell Bundler where the Gemfile and gems are.
|
9
|
+
export BUNDLE_GEMFILE="$SELFDIR/lib/vendor/Gemfile"
|
10
|
+
unset BUNDLE_IGNORE_CONFIG
|
11
|
+
|
12
|
+
# Run the actual app using the bundled Ruby interpreter, with Bundler activated.
|
13
|
+
eval "$SELFDIR/lib/ruby/bin/ruby" -rbundler/setup -rreadline "$SELFDIR/app/bin/gantree $@"
|
14
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gantree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -291,6 +291,7 @@ files:
|
|
291
291
|
- Gemfile.lock
|
292
292
|
- Guardfile
|
293
293
|
- LICENSE.txt
|
294
|
+
- Makefile
|
294
295
|
- README.md
|
295
296
|
- Rakefile
|
296
297
|
- bin/gantree
|
@@ -317,6 +318,8 @@ files:
|
|
317
318
|
- lib/gantree/update.rb
|
318
319
|
- lib/gantree/version.rb
|
319
320
|
- lib/gantree/wiki.rb
|
321
|
+
- packaging/bundler-config
|
322
|
+
- packaging/wrapper.sh
|
320
323
|
- spec/fixtures/project/Dockerrun.aws.json
|
321
324
|
- spec/lib/gantree/1_release_notes_spec.rb
|
322
325
|
- spec/lib/gantree/cli_spec.rb
|