eb-docker-deploy 0.5.0 → 0.5.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac65a96dc65d9de88303721646139f11a63dd7b5
4
- data.tar.gz: 414634332803119a4ac249fb5e3fb71c4f928d9b
3
+ metadata.gz: 9c85a599060b7de1e5b98586206cf0fbb9daf3a9
4
+ data.tar.gz: 922128fc059e9d63ee6e57afefaf72ececf1693e
5
5
  SHA512:
6
- metadata.gz: 08109c1809e539e4831e3168a99f6f296fa1985ba37879257e6fe40670be142d4dbb312d50a3488df7ec7cf035fd58733aa2a1ab6f6133566cbff5c0d70d30d5
7
- data.tar.gz: 0acf0c52f67246a79ab5a5c64ba80784513e262138bd7d5d5343b935c3f5f109f3a4bc85c7da1d9ea5bc39da4f7b3cc85ee65a6dd7ffddabd435e979a7f96354
6
+ metadata.gz: f11e93101de17d7201f6752546e7c6175eda380fa5a757df90d6a28104bd5c728f33adbb1a61277d5c594e22edd3bb674fe3e4d4f43527a15d0752fb1aba8812
7
+ data.tar.gz: f85183284ae14d547993b60c0fd6e5ae15829c8dea149b691e4570e41b24648430988882cd8c5580792d8a72d4d0ab66efdab53582517238927d651e6cca58c0
@@ -24,5 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'thor'
25
25
  spec.add_dependency 'highline'
26
26
 
27
+ spec.add_dependency 'rest-client'
28
+
27
29
  spec.add_dependency 'slack-notifier'
28
30
  end
@@ -1,8 +1,10 @@
1
1
  require 'thor'
2
2
  require 'highline/import'
3
3
  require 'slack-notifier'
4
+ require 'rest-client'
4
5
 
5
6
  require 'deploy/output'
7
+ require 'deploy/docker_hub_api'
6
8
 
7
9
  require 'deploy/deployer'
8
10
 
@@ -1,10 +1,13 @@
1
1
  module Deploy
2
2
  class Deployer < Thor
3
3
  include Deploy::Output
4
+ include DockerHubApi
4
5
 
5
6
  desc 'setup config', 'setup config'
6
7
  def setup
7
- (shout('AWS creds already configured at ~/.aws/config.'); exit(1)) if File.exist?(File.expand_path('~/.aws/config'))
8
+ # setup aws config
9
+
10
+ (shout('AWS creds already configured at ~/.aws/config'); exit(1)) if File.exist?(File.expand_path('~/.aws/config'))
8
11
 
9
12
  key = ask('Enter AWS Key:')
10
13
  secret = ask('Enter AWS Secret:')
@@ -16,25 +19,30 @@ module Deploy
16
19
  f.puts "aws_access_key_id = #{key}"
17
20
  f.puts "aws_secret_access_key = #{secret}"
18
21
  end
19
- shout('AWS creds successfully configured at ~/.aws/config.') if File.exist?(File.expand_path('~/.aws/config'))
22
+ shout('AWS creds successfully configured at ~/.aws/config') if File.exist?(File.expand_path('~/.aws/config'))
23
+
24
+ # setup docker hub creds
25
+ (shout('Docker Hub creds already configured at ~/.docker/config.json'); exit(1)) if File.exist?(File.expand_path('~/.docker/config.json'))
26
+ command = "docker login"
27
+ exit(1) unless system(command)
20
28
  end
21
29
 
22
30
  method_option :version, aliases: '-v', desc: 'Version'
23
31
  method_option :environment, aliases: '-e', desc: 'Environment'
24
- method_option :build, aliases: '-b', desc: 'Build Image'
32
+ method_option :no_build, aliases: '--no-build', desc: 'Do not Build Image'
25
33
  desc 'deploy', 'deploy'
26
34
  def deploy
27
35
  check_setup
28
36
 
29
37
  environment = options[:environment]
30
- build = options[:build]
38
+ no_build = options[:no_build]
31
39
 
32
40
  version = options[:version]
33
41
  check_version(version)
34
42
 
35
43
  repo = ENV['DOCKER_REPO']
36
44
 
37
- if build
45
+ if !no_build
38
46
  announce({ color: '#6080C0', title: "Deployment started with build", text: "Deploying version #{version} to #{environment || 'stage'}" })
39
47
  build_image(repo, version)
40
48
 
@@ -47,7 +55,6 @@ module Deploy
47
55
  end
48
56
 
49
57
  run_deploy(version, environment)
50
- record_version(version)
51
58
  announce({ color: 'good', title: 'Deployment Succeeded!!', text: "The current version of #{environment || 'stage'} is #{version}" })
52
59
  end
53
60
 
@@ -72,7 +79,6 @@ module Deploy
72
79
  push_image(repo, 'latest')
73
80
 
74
81
  run_rollback(version, environment)
75
- record_version(version)
76
82
  announce({ color: 'good', title: 'Rollback Succeeded!!', text: "The current version of #{environment || 'stage'} is #{version}" })
77
83
  end
78
84
 
@@ -83,6 +89,8 @@ module Deploy
83
89
 
84
90
  desc 'list versions', 'list versions'
85
91
  def versions
92
+ check_setup
93
+
86
94
  versions_array.each do |v|
87
95
  shout v
88
96
  end
@@ -147,6 +155,7 @@ module Deploy
147
155
  (shout('eb command not installed'); exit(1)) unless command?('eb')
148
156
  (shout('elasticbeanstalk not configured for this project. run "eb init".'); exit(1)) unless File.exist?('.elasticbeanstalk')
149
157
  (shout('AWS credentials not configured.'); exit(1)) unless File.exist?(File.expand_path('~/.aws/config'))
158
+ (shout('Docker Hub credentials not configured.'); exit(1)) unless File.exist?(File.expand_path('~/.docker/config.json'))
150
159
  (shout('ENV DOCKER_REPO not set'); exit(1)) unless ENV['DOCKER_REPO']
151
160
  end
152
161
 
@@ -164,30 +173,12 @@ module Deploy
164
173
  (shout('You are currently on that version'); exit(1)) if current_version == version
165
174
  end
166
175
 
167
- def record_version(version)
168
- write_to_versions_file(versions_array.push(version))
169
- end
170
-
171
176
  def current_version
172
177
  versions_array.last
173
178
  end
174
179
 
175
180
  def versions_array
176
- read_versions_file.read.split
177
- end
178
-
179
- def write_to_versions_file(new_array)
180
- write_versions_file do |f|
181
- new_array.each { |v| f.puts(v) }
182
- end
183
- end
184
-
185
- def write_versions_file(&block)
186
- File.open('.versions', 'w+', &block)
187
- end
188
-
189
- def read_versions_file
190
- File.open('.versions', 'r')
181
+ get("/v1/repositories/#{ENV['DOCKER_REPO']}/tags").map { |tag| tag['name'] }
191
182
  end
192
183
 
193
184
  end
@@ -0,0 +1,15 @@
1
+ module DockerHubApi
2
+
3
+ ROOT_PATH = 'https://registry.hub.docker.com'
4
+
5
+ def get(url)
6
+ body = RestClient.get("#{ROOT_PATH}#{url}", { Authorization: "Basic #{get_token}" }).body
7
+ JSON.parse(body)
8
+ end
9
+
10
+ def get_token
11
+ auths_hash = JSON.parse(File.open(File.expand_path('~/.docker/config.json')).read)['auths']
12
+ docker_hub_token = auths_hash['https://index.docker.io/v1/']['auth']
13
+ end
14
+
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Deploy
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eb-docker-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-19 00:00:00.000000000 Z
11
+ date: 2015-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rest-client
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: slack-notifier
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -99,6 +113,7 @@ files:
99
113
  - eb-docker-deploy.gemspec
100
114
  - lib/deploy.rb
101
115
  - lib/deploy/deployer.rb
116
+ - lib/deploy/docker_hub_api.rb
102
117
  - lib/deploy/output.rb
103
118
  - lib/deploy/version.rb
104
119
  homepage: ''