cloudfoundry_blue_green_deploy 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/README.md +94 -101
- data/cloudfoundry_blue_green_deploy.gemspec +3 -2
- data/lib/cloudfoundry_blue_green_deploy/cloudfoundry.rb +5 -2
- data/lib/cloudfoundry_blue_green_deploy/version.rb +1 -1
- data/spec/cloudfoundry_spec.rb +44 -12
- data/spec/manifest.yml +6 -6
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2129061dc5383e80ad6d6cb88dddddf71f7d956f
|
4
|
+
data.tar.gz: 758e8c64b46156e56ba1d3ceda7a76ba1130c595
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c694025ce07bea6181b9858b88ccb30202187bb5cb423cebd270aa5cddd824d523651da38d53e5661481c9708133b540c6a2ee1d185d9672b4c553cb2280d627
|
7
|
+
data.tar.gz: cdfa76bc1dad1e760d3016177c0fcba9c5b203b5383a95cd933b5ac59e7d77a818c8dfc8aaddf258fa928dcbc3d7103f994abd334079e0e45f7e4f50596f8342
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.2
|
data/README.md
CHANGED
@@ -1,184 +1,177 @@
|
|
1
1
|
# Overview
|
2
2
|
|
3
|
-
Using a simple deployment process,
|
3
|
+
Using a simple deployment process, downtime can occur. By running two identical production environments (Blue and Green), the risk of significant downtime is minimized. If you want to automate this process and minimize errors, use the Blue/Green deployment approach: http://docs.gopivotal.com/pivotalcf/devguide/deploy-apps/blue-green.html
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
This gem provides a Rake task to automate Blue/Green deployment to a Cloud Foundry installation.
|
5
|
+
This gem provides a Rake task to automate Blue/Green deployment to a Cloud Foundry installation. For deployments that include migrations, there is an option to deploy a Rack-based shutter app.
|
8
6
|
|
9
7
|
|
10
8
|
## Installation
|
11
9
|
|
10
|
+
Currently, this gem requires Ruby 2.1.x or better. It is compatible with [Cloud Foundy CLI](https://github.com/cloudfoundry/cli) versions 6.6 - 6.11.
|
11
|
+
|
12
12
|
Add this line to your application's Gemfile:
|
13
13
|
|
14
14
|
gem 'cloudfoundry_blue_green_deploy'
|
15
15
|
|
16
16
|
And then execute:
|
17
17
|
|
18
|
-
$ bundle
|
18
|
+
$ bundle install
|
19
19
|
|
20
|
-
Or
|
20
|
+
Or download and install:
|
21
21
|
|
22
22
|
$ gem install cloudfoundry_blue_green_deploy
|
23
23
|
|
24
|
-
##
|
24
|
+
## First Deployment
|
25
|
+
Make sure that all services that are specified in the manifest.yml file are created before running a first deployment.
|
25
26
|
|
26
27
|
## Usage
|
27
28
|
|
28
|
-
1.
|
29
|
-
|
29
|
+
1. Define the Blue and Green instances of your application(s) in your Cloud Foundry Manifest. (see rules in the next section)
|
30
|
+
|
31
|
+
2. Run:
|
30
32
|
|
31
|
-
|
33
|
+
$ bundle exec rake cf:blue_green_deploy[web-app-name]
|
32
34
|
|
33
35
|
Where "web-app-name" is the "name" attribute in your manifest.yml.
|
34
36
|
The default color for first deployment is blue.
|
35
|
-
You may optionally specify the color that you would like to be the "live" instance on the first deployment.
|
36
37
|
|
37
38
|
### manifest.yml
|
38
39
|
|
39
40
|
Your Cloud Foundry manifest file must comply with the following requirements:
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
- `name`: two application instances are required. One name ending with `-green` and another ending with `-blue`
|
43
|
+
- `host`: the url. One ending with `-green` and the other ending with `-blue`
|
44
|
+
- `domain`: required
|
45
|
+
- `memory`: optional, default will be used if omitted
|
46
|
+
- `command`: `bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV`
|
47
|
+
- `services`: Optional, only required if there are services that need to be bound
|
46
48
|
|
47
49
|
#### Bare Minimum Example:
|
48
50
|
|
49
51
|
In this example:
|
50
|
-
|
51
|
-
- "carrot-soup" has a database service known as "oyster-cracker".
|
52
|
+
Our web application is known to Cloud Foundry as `awesome-app` with a database service known as `memory-bank-db`. Its URL is `awesomeapp.cfapps.io`.
|
52
53
|
|
53
54
|
---
|
54
55
|
applications:
|
55
|
-
|
56
|
-
|
57
|
-
host: la-pong-green
|
56
|
+
- name: awesome-app-blue
|
57
|
+
host: awesomeapp-blue
|
58
58
|
domain: cfapps.io
|
59
59
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
60
60
|
services:
|
61
|
-
-
|
61
|
+
- memory-bank-db
|
62
62
|
|
63
|
-
- name:
|
64
|
-
host:
|
63
|
+
- name: awesome-app-green
|
64
|
+
host: awesomeapp-green
|
65
65
|
domain: cfapps.io
|
66
66
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
67
67
|
services:
|
68
|
-
-
|
68
|
+
- memory-bank-db
|
69
69
|
|
70
70
|
And perform a blue/green deploy like this:
|
71
71
|
|
72
|
-
$ bundle exec rake cf:blue_green_deploy[
|
72
|
+
$ bundle exec rake cf:blue_green_deploy[awesome-app]
|
73
73
|
|
74
74
|
## Workers
|
75
75
|
|
76
76
|
Non-trivial applications often require background processes to perform asynchronous jobs (e.g. sending email, importing data from external systems, etc.).
|
77
|
-
If these applications' code are to stay in sync with the web application, they need
|
77
|
+
If these applications' code are to stay in sync with the web application, they need Blue and Green treatment as well.
|
78
78
|
|
79
79
|
This Rake task natively supports worker application instances.
|
80
80
|
|
81
81
|
### Usage (with Workers)
|
82
82
|
|
83
|
-
1.
|
84
|
-
2.
|
83
|
+
1. Define the Blue and Green instances of your application and workers in your Cloud Foundry Manifest. (see rules in the next section)
|
84
|
+
2. Run:
|
85
|
+
|
86
|
+
|
87
|
+
$ bundle exec rake cf:blue_green_deploy[web-app-name,worker-name,another-worker-name]
|
85
88
|
|
86
|
-
$ bundle exec rake cf:blue_green_deploy[web-app-name,worker-name,another-worker-name]
|
87
89
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
Multiple worker apps can be specified as long as they comply with the blue/green deployment requirements in the manifest.yml
|
90
|
+
- The `web-app-name` is the `name` attribute (without a color) detailed in your manifest.yml
|
91
|
+
- The `worker-name` and `another-worker-name` are `name` attributes for two separate worker apps as detailed in your manifest.yml
|
92
|
+
- Multiple worker apps can be specified as long as they comply with the blue/green deployment requirements in the manifest.yml.
|
92
93
|
|
93
94
|
### manifest.yml
|
94
95
|
|
95
96
|
For web application deployment (see requirements above)
|
96
97
|
|
97
|
-
For worker applications
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
For worker applications:
|
99
|
+
- `name`: Two application instances are required. One name ending with `-green` and another ending with `-blue`
|
100
|
+
- `command`: Required
|
101
|
+
- `path`: Relative to the current working directory
|
102
|
+
- `services`: Optional, only required if there are services that need to be bound
|
102
103
|
|
103
104
|
#### Example with Workers
|
104
105
|
|
105
106
|
In this example:
|
106
|
-
- Our web application is known to Cloud Foundry as
|
107
|
-
-
|
108
|
-
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
107
|
+
- Our web application is known to Cloud Foundry as `awesome-app`.
|
108
|
+
- Its URL is `awesomeapp.cfapps.io`
|
109
|
+
- The app `awesome-app` has a database service known as `memory-bank-db`.
|
110
|
+
- We have a worker application named `super-queue`, whose database is known as `key-vals-db`.
|
111
|
+
|
112
|
+
---
|
113
|
+
applications:
|
114
|
+
- name: awesome-app-blue
|
115
|
+
host: awesomeapp-blue
|
116
|
+
domain: cfapps.io
|
117
|
+
memory: 1GB
|
118
|
+
path: .
|
119
|
+
command: bundle exec rails s -p $PORT -e $RAILS_ENV
|
120
|
+
services:
|
121
|
+
- memory-bank-db
|
122
|
+
|
123
|
+
- name: awesome-app-green
|
124
|
+
host: awesomeapp-green
|
125
|
+
domain: cfapps.io
|
126
|
+
memory: 1GB
|
127
|
+
path: .
|
128
|
+
command: bundle exec rails s -p $PORT -e $RAILS_ENV
|
129
|
+
services:
|
130
|
+
- memory-bank-db
|
131
|
+
|
132
|
+
- name: super-queue-blue
|
133
|
+
command: bundle exec rails s -p $PORT -e $RAILS_ENV
|
134
|
+
path: ../super-queue
|
135
|
+
services:
|
136
|
+
- key-vals-db
|
137
|
+
|
138
|
+
- name: super-queue-green
|
139
|
+
command: bundle exec rails s -p $PORT -e $RAILS_ENV
|
140
|
+
path: ../super-queue
|
141
|
+
services:
|
142
|
+
- key-vals-db
|
143
|
+
|
144
|
+
|
145
|
+
And perform the blue/green deploy like this:
|
146
|
+
|
147
|
+
$ bundle exec rake cf:blue_green_deploy[awesome-app, super-queue]
|
146
148
|
|
147
149
|
# Blue/Green with Shutter
|
148
150
|
|
149
|
-
For
|
151
|
+
For Blue and Green deployments that require a database migration this tool provides the ability to automatically shutter the app during the required downtime. To use this feature, create a shutter app and configure your `manifest.yml`.
|
150
152
|
|
151
153
|
## Creating a Minimal Shutter App
|
152
154
|
|
153
155
|
1. Add the following to your manifest.yml. Note that the name must match the name of your production application and end in -shutter.
|
154
156
|
|
155
|
-
|
156
|
-
|
157
|
-
|
157
|
+
- name: awesome-app-shutter
|
158
|
+
command: bundle exec rackup config.ru -p $PORT -E $RACK_ENV
|
159
|
+
path: shutter-app
|
158
160
|
|
159
|
-
2. Create a directory named
|
160
|
-
1. create a Rack config (config.ru):
|
161
|
+
2. Create a directory named `shutter-app`. In that directory:
|
161
162
|
|
162
|
-
|
163
|
-
def call(env)
|
164
|
-
[200, {"Content-Type" => "text/plain"}, ["Temporarily down for maintenance. Please check back shortly."]]
|
165
|
-
end
|
166
|
-
end
|
163
|
+
- Create a Rack config [config.ru](https://gist.github.com/marianaIAm/4d04a20fdb6d05c64bce)
|
167
164
|
|
168
|
-
|
165
|
+
- Create a minimal Gemfile:
|
169
166
|
|
170
|
-
|
167
|
+
source 'https://rubygems.org'
|
168
|
+
ruby '2.1.2'
|
171
169
|
|
172
|
-
|
173
|
-
ruby '2.0.0'
|
170
|
+
gem 'rack'
|
174
171
|
|
175
|
-
|
176
|
-
|
177
|
-
3. create the Gemfile.lock by running Bundler in the "shutter-app" directory:
|
178
|
-
|
179
|
-
$ bundle install
|
172
|
+
- Create the Gemfile.lock by running Bundler in the `shutter-app` directory:
|
180
173
|
|
174
|
+
$ bundle install
|
181
175
|
|
182
|
-
- Note: as of 05/09/14 deployment using Cloud Foundry's buildpack does not appear to be compatible with ruby version 2.1.0.
|
183
|
-
- Our fail-fast philosophy. We recommend understanding deployment on Cloud Foundry before using this tool.
|
184
176
|
|
177
|
+
Our fail-fast philosophy. We recommend understanding deployment on Cloud Foundry before using this tool.
|
@@ -7,16 +7,17 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = 'cloudfoundry_blue_green_deploy'
|
8
8
|
spec.version = CloudfoundryBlueGreenDeploy::VERSION
|
9
9
|
spec.authors = ['John Ryan and Mariana Lenetis']
|
10
|
-
spec.email = ['jryan@
|
10
|
+
spec.email = ['jryan@pivotal.io', 'mlenetis@pivotal.io']
|
11
11
|
spec.summary = %q{Blue-green deployment tool for Cloud Foundry.}
|
12
12
|
spec.description = %q{Blue-green deployment tool for Cloud Foundry. Please see readme.}
|
13
|
-
spec.homepage = ''
|
13
|
+
spec.homepage = 'https://github.com/marianaIAm/cloudfoundry_blue_green_deploy'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
|
+
spec.required_ruby_version = '~> 2.1'
|
20
21
|
|
21
22
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
23
|
spec.add_development_dependency 'rake'
|
@@ -49,13 +49,16 @@ module CloudfoundryBlueGreenDeploy
|
|
49
49
|
found_header = false
|
50
50
|
lines.each do |line|
|
51
51
|
line = line.split
|
52
|
-
if
|
52
|
+
if !found_header && line.include?('host') && line.include?('domain') && line.include?('apps')
|
53
53
|
found_header = true
|
54
|
+
@host_index = line.find_index('host')
|
55
|
+
@domain_index = line.find_index('domain')
|
56
|
+
@apps_index = line.find_index('apps')
|
54
57
|
next
|
55
58
|
end
|
56
59
|
|
57
60
|
if found_header
|
58
|
-
routes << Route.new(line[
|
61
|
+
routes << Route.new(line[@host_index], line[@domain_index], line[@apps_index])
|
59
62
|
end
|
60
63
|
end
|
61
64
|
routes
|
data/spec/cloudfoundry_spec.rb
CHANGED
@@ -15,9 +15,11 @@ module CloudfoundryBlueGreenDeploy
|
|
15
15
|
before do
|
16
16
|
allow(CommandLine).to receive(:system).and_return(false)
|
17
17
|
end
|
18
|
+
|
18
19
|
it 'throws a CloudfoundryCliError' do
|
19
20
|
expect{ subject }.to raise_error(CloudfoundryCliError)
|
20
21
|
end
|
22
|
+
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -34,9 +36,11 @@ module CloudfoundryBlueGreenDeploy
|
|
34
36
|
before do
|
35
37
|
allow(CommandLine).to receive(:system).and_return(false)
|
36
38
|
end
|
39
|
+
|
37
40
|
it 'throws a CloudfoundryCliError' do
|
38
41
|
expect{ subject }.to raise_error(CloudfoundryCliError)
|
39
42
|
end
|
43
|
+
|
40
44
|
end
|
41
45
|
end
|
42
46
|
|
@@ -67,8 +71,8 @@ module CloudfoundryBlueGreenDeploy
|
|
67
71
|
expect(subject[1].name).to eq 'carrot-soup-green'
|
68
72
|
expect(subject[1].state).to eq 'started'
|
69
73
|
end
|
70
|
-
end
|
71
74
|
|
75
|
+
end
|
72
76
|
end
|
73
77
|
|
74
78
|
describe '#routes' do
|
@@ -78,27 +82,49 @@ module CloudfoundryBlueGreenDeploy
|
|
78
82
|
end
|
79
83
|
|
80
84
|
context 'there is a route defined in the current organization' do
|
81
|
-
|
82
|
-
|
85
|
+
context 'the cf routes output does not include the space (cli version < 6.11)' do
|
86
|
+
let(:cli_routes_output) {
|
87
|
+
<<-CLI
|
83
88
|
Getting routes as pivot-pong-developers@googlegroups.com ...
|
84
89
|
|
85
90
|
host domain apps
|
86
91
|
pivot-pong-blue cfapps.io pivot-pong-staging-blue
|
87
92
|
pivot-pong-green cfapps.io pivot-pong-staging-green
|
88
93
|
la-pong cfapps.io pivot-pong-staging-green
|
89
|
-
|
90
|
-
|
94
|
+
CLI
|
95
|
+
}
|
91
96
|
|
97
|
+
it 'parses the CLI "routes" output into a collection of Route objects, one for each route' do
|
98
|
+
expect(subject).to be_kind_of(Array)
|
99
|
+
expect(subject.length).to eq 3
|
100
|
+
expect(subject[0].host).to eq 'pivot-pong-blue'
|
101
|
+
expect(subject[0].domain).to eq 'cfapps.io'
|
102
|
+
expect(subject[0].app).to eq 'pivot-pong-staging-blue'
|
103
|
+
end
|
92
104
|
|
93
|
-
it 'parses the CLI "routes" output into a collection of Route objects, one for each route' do
|
94
|
-
expect(subject).to be_kind_of(Array)
|
95
|
-
expect(subject.length).to eq 3
|
96
|
-
expect(subject[0].host).to eq 'pivot-pong-blue'
|
97
|
-
expect(subject[0].domain).to eq 'cfapps.io'
|
98
|
-
expect(subject[0].app).to eq 'pivot-pong-staging-blue'
|
99
105
|
end
|
100
|
-
|
106
|
+
context 'the cf routes output order is changed' do
|
107
|
+
let(:cli_routes_output) {
|
108
|
+
<<-CLI
|
109
|
+
Getting routes as pivot-pong-developers@googlegroups.com ...
|
110
|
+
|
111
|
+
space host domain apps
|
112
|
+
production pivot-pong-blue cfapps.io pivot-pong-production-blue
|
113
|
+
production pivot-pong-green cfapps.io pivot-pong-production-green
|
114
|
+
production la-pong cfapps.io pivot-pong-production-green
|
115
|
+
CLI
|
116
|
+
}
|
117
|
+
|
118
|
+
it 'parses the CLI "routes" output into a collection of Route objects, one for each route' do
|
119
|
+
expect(subject).to be_kind_of(Array)
|
120
|
+
expect(subject.length).to eq 3
|
121
|
+
expect(subject[0].host).to eq 'pivot-pong-blue'
|
122
|
+
expect(subject[0].domain).to eq 'cfapps.io'
|
123
|
+
expect(subject[0].app).to eq 'pivot-pong-production-blue'
|
124
|
+
end
|
101
125
|
|
126
|
+
end
|
127
|
+
end
|
102
128
|
context '"cf routes" fails with an error' do
|
103
129
|
let(:cli_routes_output) {
|
104
130
|
<<-CLI
|
@@ -108,9 +134,11 @@ module CloudfoundryBlueGreenDeploy
|
|
108
134
|
Failed fetching routes.
|
109
135
|
CLI
|
110
136
|
}
|
137
|
+
|
111
138
|
it 'throws a CloudfoundryCliError' do
|
112
139
|
expect{ subject }.to raise_error(CloudfoundryCliError)
|
113
140
|
end
|
141
|
+
|
114
142
|
end
|
115
143
|
end
|
116
144
|
|
@@ -130,9 +158,11 @@ module CloudfoundryBlueGreenDeploy
|
|
130
158
|
before do
|
131
159
|
allow(CommandLine).to receive(:system).and_return(false)
|
132
160
|
end
|
161
|
+
|
133
162
|
it 'throws a CloudfoundryCliError' do
|
134
163
|
expect{ subject }.to raise_error(CloudfoundryCliError)
|
135
164
|
end
|
165
|
+
|
136
166
|
end
|
137
167
|
end
|
138
168
|
|
@@ -152,9 +182,11 @@ module CloudfoundryBlueGreenDeploy
|
|
152
182
|
before do
|
153
183
|
allow(CommandLine).to receive(:system).and_return(false)
|
154
184
|
end
|
185
|
+
|
155
186
|
it 'throws a CloudfoundryCliError' do
|
156
187
|
expect{ subject }.to raise_error(CloudfoundryCliError)
|
157
188
|
end
|
189
|
+
|
158
190
|
end
|
159
191
|
end
|
160
192
|
end
|
data/spec/manifest.yml
CHANGED
@@ -3,14 +3,14 @@ applications:
|
|
3
3
|
|
4
4
|
- name: the-web-app-worker-green
|
5
5
|
host: the-web-app-worker-green
|
6
|
-
|
6
|
+
memory: 1GB
|
7
7
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
8
8
|
services:
|
9
9
|
- creme-fraiche
|
10
10
|
|
11
11
|
- name: hard-worker-green
|
12
12
|
host: hard-worker-green
|
13
|
-
|
13
|
+
memory: 1GB
|
14
14
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
15
15
|
services:
|
16
16
|
- creme-fraiche
|
@@ -18,7 +18,7 @@ applications:
|
|
18
18
|
- name: the-web-app-green
|
19
19
|
host: the-web-url-green
|
20
20
|
domain: cfapps.io
|
21
|
-
|
21
|
+
memory: 1GB
|
22
22
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
23
23
|
services:
|
24
24
|
- oyster-cracker
|
@@ -26,21 +26,21 @@ applications:
|
|
26
26
|
- name: the-web-app-blue
|
27
27
|
host: the-web-url-blue
|
28
28
|
domain: cfapps.io
|
29
|
-
|
29
|
+
memory: 1GB
|
30
30
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
31
31
|
services:
|
32
32
|
- oyster-cracker
|
33
33
|
|
34
34
|
- name: the-web-app-worker-blue
|
35
35
|
host: the-web-app-worker-blue
|
36
|
-
|
36
|
+
memory: 1GB
|
37
37
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
38
38
|
services:
|
39
39
|
- creme-fraiche
|
40
40
|
|
41
41
|
- name: hard-worker-blue
|
42
42
|
host: hard-worker-blue
|
43
|
-
|
43
|
+
memory: 1GB
|
44
44
|
command: bundle exec rake cf:on_first_instance db:migrate && bundle exec rails s -p $PORT -e $RAILS_ENV
|
45
45
|
services:
|
46
46
|
- creme-fraiche
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudfoundry_blue_green_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Ryan and Mariana Lenetis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -68,13 +68,14 @@ dependencies:
|
|
68
68
|
version: '0'
|
69
69
|
description: Blue-green deployment tool for Cloud Foundry. Please see readme.
|
70
70
|
email:
|
71
|
-
- jryan@
|
72
|
-
- mlenetis@
|
71
|
+
- jryan@pivotal.io
|
72
|
+
- mlenetis@pivotal.io
|
73
73
|
executables: []
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
77
|
- ".gitignore"
|
78
|
+
- ".ruby-version"
|
78
79
|
- Gemfile
|
79
80
|
- LICENSE.txt
|
80
81
|
- README.md
|
@@ -99,7 +100,7 @@ files:
|
|
99
100
|
- spec/manifest.yml
|
100
101
|
- spec/route_spec.rb
|
101
102
|
- spec/spec_helper.rb
|
102
|
-
homepage:
|
103
|
+
homepage: https://github.com/marianaIAm/cloudfoundry_blue_green_deploy
|
103
104
|
licenses:
|
104
105
|
- MIT
|
105
106
|
metadata: {}
|
@@ -109,9 +110,9 @@ require_paths:
|
|
109
110
|
- lib
|
110
111
|
required_ruby_version: !ruby/object:Gem::Requirement
|
111
112
|
requirements:
|
112
|
-
- - "
|
113
|
+
- - "~>"
|
113
114
|
- !ruby/object:Gem::Version
|
114
|
-
version: '
|
115
|
+
version: '2.1'
|
115
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
117
|
requirements:
|
117
118
|
- - ">="
|
@@ -119,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
120
|
version: '0'
|
120
121
|
requirements: []
|
121
122
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.2.
|
123
|
+
rubygems_version: 2.2.2
|
123
124
|
signing_key:
|
124
125
|
specification_version: 4
|
125
126
|
summary: Blue-green deployment tool for Cloud Foundry.
|