opsworks-deploy 0.0.3 → 0.0.4

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: 61313915a53e4d09653d4a85f855aa0b64fe1b49
4
- data.tar.gz: 164c655fc62e206aed029f6f90dfca95852e272a
3
+ metadata.gz: 24dc7f0f3e5b457e1a50978e238da61496e5e82f
4
+ data.tar.gz: 019421049e24a5fdca62366e212a8097ab855ce4
5
5
  SHA512:
6
- metadata.gz: 7e478814436ec0f4da0c9e916a1de527192e269d03d461bb26ae60fba938727ee553347b0062a251993d17e0f0d7252560c44f40b629993c97b97239eed8cd9a
7
- data.tar.gz: 207e8744ccd98c836165ba51a16b1333dbbe1a3b7066e3a67221d110d8b595f27d538564087be98534f01d2c798cb54dbd838d696419db493ec9d8b22dab1957
6
+ metadata.gz: 39e9117976d50cef7805b2a581aa353db0c999de01daa34340cc0ce19d4f5b3fd239435e5b0230d51f0b352d36317ac29616a52b916c1581ff35de2ce8e6ecf8
7
+ data.tar.gz: bcbcc9d037a8a858236b9d97dd9052289000d3c9d63ebdda322b2dfd5113bab74f46250f542bc58d67272dbebfcb97276d8b40c09bcc7f9bb125d3b31d9b5495
data/README.md CHANGED
@@ -39,10 +39,18 @@ config/stacks.json
39
39
 
40
40
  Then run:
41
41
 
42
- RAILS_ENV=staging AWS_CONFIG_FILE=~/.aws_config rake opsworks:deploy
42
+ ENV=staging AWS_CONFIG_FILE=~/.aws_config rake opsworks:deploy
43
43
 
44
44
  Note, your IAM keys should only allow deploy access to OpsWorks, but you should never check them into source control.
45
45
 
46
+ ## Without Rails
47
+
48
+ To use with other ruby applications, e.g. Sinatra, add the following line to your `Rakefile`:
49
+
50
+ require "opsworks/tasks"
51
+
52
+ This will load the rake task like above.
53
+
46
54
  ## Testing
47
55
 
48
56
  Use rspec for test
@@ -1 +1,3 @@
1
+ require 'aws-sdk'
2
+ require 'json'
1
3
  require 'opsworks/deploy/deploy'
@@ -27,17 +27,33 @@ module Opsworks::Deploy
27
27
  return true if deployment_desc.data[:status] == 'successful'
28
28
  end
29
29
 
30
- def self.get_stack(rails_env=nil)
30
+ # Look for config/stacks.json or stacks.json
31
+ def self.get_config_stacks
32
+ cwd = Dir.getwd
33
+ files = ["#{cwd}/config/stacks.json","#{cwd}/stacks.json"]
34
+
35
+ if !cwd.nil? && cwd.length > 0
36
+ files.each do |file|
37
+ if File.exists?(file)
38
+ return JSON(File.read(file))
39
+ end
40
+ end
41
+ end
42
+
43
+ return nil
44
+ end
45
+
46
+ def self.get_stack(env=nil)
47
+
48
+ # First try to get from env, then stack files
31
49
  if !ENV['STACK_ID'].nil? && !ENV['APP_ID'].nil?
32
50
  return {stack_id: ENV['STACK_ID'], app_id: ENV['APP_ID']}
33
- elsif defined?(Rails) && !rails_env.nil? && File.exists?("#{Rails.root}/config/stacks.json")
34
- # Try to grab from .stack file
35
- stacks = JSON(File.read("#{Rails.root}/config/stacks.json"))
36
- raise "Missing stacks configuration for #{rails_env}" if stacks[rails_env].empty?
51
+ elsif stacks = get_config_stacks
52
+ raise "Missing stacks configuration for #{env} in stacks.json" if stacks[env].nil?
37
53
 
38
- return stacks[rails_env]
54
+ return stacks[env]
39
55
  else
40
- raise "Must set STACK_ID/APP_ID or have config/stacks.json for rails env `#{rails_env}`"
56
+ raise "Must set STACK_ID and APP_ID or have config/stacks.json for env `#{env}`"
41
57
  end
42
58
  end
43
59
 
@@ -66,14 +82,13 @@ module Opsworks::Deploy
66
82
  opts = {
67
83
  migrate: true,
68
84
  wait: false,
69
- rails_env: nil
85
+ env: nil
70
86
  }.merge(opts)
71
87
 
72
- stack = Opsworks::Deploy.get_stack(opts[:rails_env]) # Get stack environment
88
+ stack = Opsworks::Deploy.get_stack(opts[:env]) # Get stack environment
73
89
 
74
90
  Opsworks::Deploy.configure_aws! # Ensure we are properly configured
75
- p opts
76
- p stack
91
+
77
92
  deployment = AWS.ops_works.client.create_deployment( stack_id: stack[:stack_id] || stack['stack_id'], app_id: stack[:app_id] || stack['app_id'], command: {name: 'deploy', args: {"migrate" => [ opts[:migrate] ? "true" : "false"] }} )
78
93
 
79
94
  puts deployment.inspect
@@ -1,5 +1,5 @@
1
1
  module Opsworks
2
2
  module Deploy
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -0,0 +1,9 @@
1
+ # Loads opsworks-deploy tasks from non-Rails application
2
+
3
+ # See: http://pivotallabs.com/how-i-test-rake-tasks/
4
+ # See: http://stackoverflow.com/questions/15446153/ruby-rake-load-tasks-from-a-gem
5
+ # See: http://stackoverflow.com/questions/5458134/how-do-i-import-rake-tasks-from-a-gem-when-using-sinatra
6
+ require File.join(File.dirname(__FILE__), '../opsworks-deploy')
7
+
8
+ spec = Gem::Specification.find_by_name 'opsworks-deploy'
9
+ load "#{spec.gem_dir}/lib/opsworks/tasks/opsworks.rake"
@@ -2,15 +2,15 @@
2
2
  namespace :opsworks do
3
3
 
4
4
  desc 'Deploy to Opsworks'
5
- task :deploy, [:rails_env,:migrate] => :environment do |t, args|
6
- rails_env = args[:rails_env] || ENV['RAILS_ENV']
5
+ task :deploy, [:env,:migrate] => [] do |t, args|
6
+ env = args[:env] || ENV['ENV'] || ENV['RAILS_ENV']
7
7
  migrate = args[:migrate] == "true" || args[:migrate] == "t"
8
8
 
9
- raise ArgumentError, "Please pass rails_env as argument or set RAILS_ENV environment var" if rails_env.nil? || rails_env == ""
9
+ raise ArgumentError, "Please pass env as argument or set ENV or RAILS_ENV environment var" if env.nil? || env == ""
10
10
 
11
- puts "Deploying #{rails_env}#{migrate ? " and running migrations" : ""}..."
11
+ puts "Deploying #{env}#{migrate ? " and running migrations" : ""}..."
12
12
 
13
- Opsworks::Deploy.deploy(rails_env: rails_env, migrate: migrate)
13
+ Opsworks::Deploy.deploy(env: env, migrate: migrate)
14
14
 
15
15
  puts "Finished successfully"
16
16
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["hayesgm@gmail.com"]
11
11
  spec.description = %q{Quick and easy rake task for deploying to AWS OpsWorks}
12
12
  spec.summary = %q{A quick rake task that will deploy to AWS OpsWorks. This can be added as a post-step in Continuous Integration. `rake opsworks:deply`}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/hayesgm/opsworks-deploy"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -7,7 +7,6 @@ describe 'opsworks:deploy rake task' do
7
7
 
8
8
  before(:all) do
9
9
  load File.expand_path("../../lib/opsworks/tasks/opsworks.rake", __FILE__)
10
- Rake::Task.define_task(:environment)
11
10
  end
12
11
 
13
12
  after(:each) do
@@ -15,14 +14,14 @@ describe 'opsworks:deploy rake task' do
15
14
  end
16
15
 
17
16
  it "should call invoke with argument when given arg" do
18
- expect(Opsworks::Deploy).to receive(:deploy).with(rails_env: 'test-1', migrate: false)
17
+ expect(Opsworks::Deploy).to receive(:deploy).with(env: 'test-1', migrate: false)
19
18
  Rake::Task["opsworks:deploy"].invoke('test-1')
20
19
  end
21
20
 
22
21
  it "should call invoke with argument when given env" do
23
22
  begin
24
23
  ENV['RAILS_ENV'] = "test-2"
25
- expect(Opsworks::Deploy).to receive(:deploy).with(rails_env: 'test-2', migrate: false)
24
+ expect(Opsworks::Deploy).to receive(:deploy).with(env: 'test-2', migrate: false)
26
25
  Rake::Task["opsworks:deploy"].invoke
27
26
  ensure
28
27
  ENV['RAILS_ENV'] = nil
@@ -43,12 +42,10 @@ describe 'opsworks:deploy rake task' do
43
42
  }
44
43
 
45
44
  # Mock ENV vars
46
- ENV['RAILS_ENV'] = "test-3"
45
+ ENV['ENV'] = "test-3"
47
46
  ENV['IAM_KEY'] = ENV['IAM_SECRET'] = "a"
48
47
 
49
- # Allow rails-generated config
50
- Rails = double("rails")
51
- expect(Rails).to receive(:root).and_return(".").twice
48
+ # Allow file config
52
49
  expect(File).to receive(:exists?).and_return(true)
53
50
  expect(File).to receive(:read).and_return(config.to_json)
54
51
 
@@ -67,7 +64,7 @@ describe 'opsworks:deploy rake task' do
67
64
  # Call rake task
68
65
  Rake::Task["opsworks:deploy"].invoke
69
66
  ensure # clear ENV vars
70
- ENV['RAILS_ENV'] = ENV['IAM_KEY'] = ENV['IAM_SECRET'] = nil
67
+ ENV['ENV'] = ENV['IAM_KEY'] = ENV['IAM_SECRET'] = nil
71
68
  end
72
69
  end
73
70
 
@@ -83,9 +80,7 @@ describe 'opsworks:deploy rake task' do
83
80
  # Mock ENV vars
84
81
  ENV['IAM_KEY'] = ENV['IAM_SECRET'] = "a"
85
82
 
86
- # Allow rails-generated config
87
- Rails = double("rails")
88
- expect(Rails).to receive(:root).and_return(".").twice
83
+ # Allow file config
89
84
  expect(File).to receive(:exists?).and_return(true)
90
85
  expect(File).to receive(:read).and_return(config.to_json)
91
86
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opsworks-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geoff Hayes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-26 00:00:00.000000000 Z
11
+ date: 2014-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -111,11 +111,12 @@ files:
111
111
  - lib/opsworks/deploy/deploy.rb
112
112
  - lib/opsworks/deploy/railtie.rb
113
113
  - lib/opsworks/deploy/version.rb
114
+ - lib/opsworks/tasks.rb
114
115
  - lib/opsworks/tasks/opsworks.rake
115
116
  - opsworks-deploy.gemspec
116
117
  - spec/opsworks_deploy_spec.rb
117
118
  - spec/spec_helper.rb
118
- homepage: ''
119
+ homepage: https://github.com/hayesgm/opsworks-deploy
119
120
  licenses:
120
121
  - MIT
121
122
  metadata: {}
@@ -143,3 +144,4 @@ summary: A quick rake task that will deploy to AWS OpsWorks. This can be added
143
144
  test_files:
144
145
  - spec/opsworks_deploy_spec.rb
145
146
  - spec/spec_helper.rb
147
+ has_rdoc: