aerosol 0.5.1
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 +7 -0
- data/.cane +3 -0
- data/.gitignore +15 -0
- data/.rspec +3 -0
- data/.travis.yml +6 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +20 -0
- data/README.md +399 -0
- data/Rakefile +18 -0
- data/aerosol.gemspec +32 -0
- data/bin/aerosol +8 -0
- data/img/aerosol.pdf +3898 -11
- data/img/aerosol.png +0 -0
- data/lib/aerosol/auto_scaling.rb +240 -0
- data/lib/aerosol/aws.rb +62 -0
- data/lib/aerosol/aws_model.rb +93 -0
- data/lib/aerosol/cli.rb +41 -0
- data/lib/aerosol/connection.rb +39 -0
- data/lib/aerosol/deploy.rb +105 -0
- data/lib/aerosol/env.rb +6 -0
- data/lib/aerosol/instance.rb +55 -0
- data/lib/aerosol/launch_configuration.rb +106 -0
- data/lib/aerosol/rake_task.rb +141 -0
- data/lib/aerosol/runner.rb +329 -0
- data/lib/aerosol/util.rb +41 -0
- data/lib/aerosol/version.rb +5 -0
- data/lib/aerosol.rb +83 -0
- data/spec/aerosol/auto_scaling_spec.rb +420 -0
- data/spec/aerosol/aws_spec.rb +24 -0
- data/spec/aerosol/cli_spec.rb +10 -0
- data/spec/aerosol/connection_spec.rb +94 -0
- data/spec/aerosol/deploy_spec.rb +192 -0
- data/spec/aerosol/env_spec.rb +16 -0
- data/spec/aerosol/instance_spec.rb +57 -0
- data/spec/aerosol/launch_configuration_spec.rb +328 -0
- data/spec/aerosol/rake_task_spec.rb +19 -0
- data/spec/aerosol/runner_spec.rb +482 -0
- data/spec/aerosol_spec.rb +41 -0
- data/spec/fixtures/Procfile +1 -0
- data/spec/fixtures/Rakefile +17 -0
- data/spec/fixtures/not_a_tar-2.txt +1 -0
- data/spec/fixtures/not_a_tar.txt +1 -0
- data/spec/fixtures/tar-2.tar +0 -0
- data/spec/fixtures/test-1.tar +0 -0
- data/spec/fixtures/test-2.tar.gz +0 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/vcr.rb +11 -0
- data/spec/vcr/Deployz_Docker/_fetch_import/when_both_import_and_name_are_present_present/and_it_points_to_a_non-S3_url/pulls_the_file.yml +214 -0
- metadata +312 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e6cf29a31c88ffb04c424c3bcbbcb0645d74e071
|
4
|
+
data.tar.gz: 4e9f58b45fd64a4875e09ec9c3ce0645f82d6ecf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 25cb41164e46803c1abe915dd809c12fdf050b3427d6ded99353b1e7ca3a434eb3a74d60f24f1ef66896b3510ea1905483f66bb8c279d59bfce7588026ecc234
|
7
|
+
data.tar.gz: 525852da882273707a57af5161075dd36a9c1f1ad3abaa032ba8dcc80ed4697c20c7e67a9c4e713f497461e187e876cd481d1ff669e0be043d4fe0465eede0bf
|
data/.cane
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2013 Swipely, Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,399 @@
|
|
1
|
+
[](http://badge.fury.io/rb/aerosol)
|
2
|
+
[](https://travis-ci.org/swipely/aerosol)
|
3
|
+
|
4
|
+

|
5
|
+
=========================================================================
|
6
|
+
|
7
|
+
Aerosol orchestrates instance-based-deploys. Start new EC2 instances running your app every release, using auto scaling groups to orchestrate the startup of the new version and the graceful shutdown of the old version.
|
8
|
+
|
9
|
+
Getting Started
|
10
|
+
---------------
|
11
|
+
|
12
|
+
Add it to your Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'aerosol'
|
16
|
+
```
|
17
|
+
|
18
|
+
And build an aerosol.rb
|
19
|
+
|
20
|
+
If you're not using Rails, add it to your Rakefile:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
require 'aerosol'
|
24
|
+
```
|
25
|
+
|
26
|
+
Usage
|
27
|
+
-----
|
28
|
+
|
29
|
+
### Rake Tasks
|
30
|
+
|
31
|
+
The deploy tasks are within the `aerosol:deploy_name` namespace where deploy_name is based upon the deploy section detailed below.
|
32
|
+
|
33
|
+
#### Full deploy tasks
|
34
|
+
|
35
|
+
`all` - Full serial deployment: Run migration, create auto scaling group, wait for instances, stop old application, destroy old auto scaling groups and run the post deploy command
|
36
|
+
|
37
|
+
`all_asynch` - Same as `all` but runs the migration and creates auto scaling groups in parallel
|
38
|
+
|
39
|
+
#### The separate deploy rake tasks
|
40
|
+
|
41
|
+
`run_migration` - Runs the ActiveRecord migration through the SSH connection given
|
42
|
+
|
43
|
+
`create_auto_scaling_group` - Creates a new auto scaling group for the current git hash
|
44
|
+
|
45
|
+
`wait_for_new_instances` - Waits for instances of the new autoscaling groups to start up
|
46
|
+
|
47
|
+
`stop_old_app` - Runs command to shut down the application on the old instances instead of just terminating
|
48
|
+
|
49
|
+
`destroy_old_auto_scaling_groups` - Terminates instances with the current tag and different git hash
|
50
|
+
|
51
|
+
`destroy_new_auto_scaling_groups` - Terminates instances with the current tag and same git hash
|
52
|
+
|
53
|
+
`run_post_deploy` - Runs a post deploy command
|
54
|
+
|
55
|
+
#### Non-deploy rake tasks
|
56
|
+
|
57
|
+
`aerosol:ssh:deploy_name` - Prints out ssh command to all instances of the latest deploy
|
58
|
+
|
59
|
+
### CLI
|
60
|
+
|
61
|
+
`aerosol ssh deploy_name` - Same as aerosol:ssh:deploy_name
|
62
|
+
|
63
|
+
`aerosol ssh -r deploy_name` - Runs the ssh command to the first instance available (still prints out the others)
|
64
|
+
|
65
|
+
Demo
|
66
|
+
----
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
namespace :test
|
70
|
+
|
71
|
+
launch_configuration :launch_config do
|
72
|
+
ami 'ami-1715317e' # Ubuntu 13.04 US-East-1 ebs amd64
|
73
|
+
instance_type 'm1.small'
|
74
|
+
iam_role 'role-app'
|
75
|
+
key_name 'app'
|
76
|
+
|
77
|
+
user_data ERB.new(File.read('startup.sh.erb')).result(binding)
|
78
|
+
end
|
79
|
+
|
80
|
+
auto_scaling :auto_scaling_group do
|
81
|
+
availability_zones ['us-east-1a']
|
82
|
+
max_size 1
|
83
|
+
min_size 1
|
84
|
+
launch_configuration :launch_config
|
85
|
+
end
|
86
|
+
|
87
|
+
ssh :ssh do
|
88
|
+
user 'ubuntu'
|
89
|
+
end
|
90
|
+
|
91
|
+
ssh :migration do
|
92
|
+
user 'ubuntu'
|
93
|
+
host 'dbserver.example.com'
|
94
|
+
end
|
95
|
+
|
96
|
+
ssh :local do
|
97
|
+
jump :user => 'ubuntu', :host => 'jump.example.com'
|
98
|
+
end
|
99
|
+
|
100
|
+
deploy :deploy do
|
101
|
+
ssh :ssh
|
102
|
+
migration_ssh :migration
|
103
|
+
local_ssh :local
|
104
|
+
auto_scaling :auto_scaling_group
|
105
|
+
stop_command 'sudo stop app'
|
106
|
+
live_check '/version'
|
107
|
+
app_port 443
|
108
|
+
post_deploy_command 'bundle exec rake postdeploycommand'
|
109
|
+
end
|
110
|
+
```
|
111
|
+
|
112
|
+
The DSL
|
113
|
+
-------
|
114
|
+
|
115
|
+
The DSL is broken down into multiple objects, all of which conform to a specific format. Each object starts with the name of the section,
|
116
|
+
followed by a name for the object you're creating, and a block for configuration.
|
117
|
+
|
118
|
+
```ruby
|
119
|
+
auto_scaling :test_auto_scaling do
|
120
|
+
# code here
|
121
|
+
end
|
122
|
+
```
|
123
|
+
|
124
|
+
Each object has an enumeration of valid attributes. The following code sets the `max_size` attribute in a `auto_scaling` group called `test_auto_scaling`:
|
125
|
+
|
126
|
+
```ruby
|
127
|
+
auto_scaling :test_auto_scaling do
|
128
|
+
max_size 1
|
129
|
+
end
|
130
|
+
```
|
131
|
+
|
132
|
+
Finally, each object has zero or more valid references to other DSL objects. The following code sets `auto_scaling` that references a `launch_configuration`:
|
133
|
+
|
134
|
+
```ruby
|
135
|
+
launch_configuration :my_launch_config do
|
136
|
+
max_size 1
|
137
|
+
end
|
138
|
+
|
139
|
+
auto_scaling :my_auto_scaling do
|
140
|
+
launch_configuration :my_launch_config
|
141
|
+
end
|
142
|
+
```
|
143
|
+
|
144
|
+
Below is an alternative syntax that accomplishes the same thing:
|
145
|
+
|
146
|
+
```ruby
|
147
|
+
auto_scaling :my_auto_scaling do
|
148
|
+
launch_configuration do
|
149
|
+
max_size 1
|
150
|
+
end
|
151
|
+
end
|
152
|
+
```
|
153
|
+
|
154
|
+
Network Design
|
155
|
+
--------------
|
156
|
+
|
157
|
+
A simplified version of the AWS network design that Aerosol manages is: auto scaling groups control running instances, and determine how those instances start up.
|
158
|
+
|
159
|
+
Aerosol defines a way to deploy to an auto scaling group, with the correct launch configuration and properly brings up the instances.
|
160
|
+
|
161
|
+
Controlling SSH connections
|
162
|
+
---------------------------
|
163
|
+
|
164
|
+
SSH connections are used when connecting for migrations, checking if the instances are live and running local connections.
|
165
|
+
|
166
|
+
Options:
|
167
|
+
|
168
|
+
- user - The user to connect with
|
169
|
+
- host - Where to connect to (will be filled in for instance and local connections)
|
170
|
+
- jump - A hash of a user and host to connect through. For secure/VPN connections.
|
171
|
+
|
172
|
+
### Examples
|
173
|
+
|
174
|
+
Minimal SSH connection for local connections:
|
175
|
+
|
176
|
+
```ruby
|
177
|
+
ssh :local_ssh do
|
178
|
+
end
|
179
|
+
```
|
180
|
+
|
181
|
+
Since a machine could start up with your user and not need a jump server, this could be all you need.
|
182
|
+
|
183
|
+
SSH connection with a jump server:
|
184
|
+
|
185
|
+
```ruby
|
186
|
+
ssh :jump_ssh do
|
187
|
+
jump :user => 'ec2_user', :host => 'jump.example.com'
|
188
|
+
end
|
189
|
+
```
|
190
|
+
|
191
|
+
A lot of network structures use a middle jump server before connecting to the internal network. Supplying either a user, host or both, you can establish a jump server to connect through.
|
192
|
+
|
193
|
+
SSH connection with a user and host:
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
ssh :migration_ssh do
|
197
|
+
user 'db_user'
|
198
|
+
host 'dbserver.example.com'
|
199
|
+
end
|
200
|
+
```
|
201
|
+
|
202
|
+
When using ActiveRecord, you'll need to supply a connection to pass through. Supply your database server credentials like this (you can also use a jump server here).
|
203
|
+
|
204
|
+
Controlling instance definition
|
205
|
+
-------------------------------
|
206
|
+
|
207
|
+
Launch configurations define the EC2 instance startup. All the features entered via the EC2 wizard are available.
|
208
|
+
|
209
|
+
Options:
|
210
|
+
|
211
|
+
- ami - The Amazon Machine Image that designates what operating system and possible tiers to run on.
|
212
|
+
- instance_type - The tier to run the instance on (m1.large, etc.)
|
213
|
+
- security_groups - A list of security groups the instances are paired with.
|
214
|
+
- user_data - The bash script that is run as the instance comes live
|
215
|
+
- iam_role - the Identity and Access Management role the instances should startup with
|
216
|
+
- kernel_id - The kernel ID configurable for the EC2 instance (best found through the EC2 wizard)
|
217
|
+
- key_name - The name of the EC2 key pair for initial connections to the instance
|
218
|
+
- spot_price - The max hourly price to be paid for any spot prices
|
219
|
+
|
220
|
+
### Examples
|
221
|
+
|
222
|
+
Launch configurations must specify an AMI and instance type. Everything else can be ignored and the instance will start up:
|
223
|
+
|
224
|
+
```ruby
|
225
|
+
launch_configuration :minimal_lc do
|
226
|
+
ami 'ami-1715317e' # Ubuntu 13.04 US-East-1 ebs amd64
|
227
|
+
instance_type 'm1.small'
|
228
|
+
end
|
229
|
+
```
|
230
|
+
|
231
|
+
This instance will startup and do nothing, with almost no way to connect to it though.
|
232
|
+
|
233
|
+
Adding a script into the user_data section sets how the instance will start up. Either use plain text, read from a file, or use ERB:
|
234
|
+
|
235
|
+
Text:
|
236
|
+
|
237
|
+
```ruby
|
238
|
+
launch_configuration :startup_lc do
|
239
|
+
ami 'ami-1715317e' # Ubuntu 13.04 US-East-1 ebs amd64
|
240
|
+
instance_type 'm1.small'
|
241
|
+
user_data "#!/bin/bash\n# Get file here"
|
242
|
+
end
|
243
|
+
```
|
244
|
+
|
245
|
+
File:
|
246
|
+
|
247
|
+
```ruby
|
248
|
+
launch_configuration :startup_lc do
|
249
|
+
ami 'ami-1715317e' # Ubuntu 13.04 US-East-1 ebs amd64
|
250
|
+
instance_type 'm1.small'
|
251
|
+
user_data File.read('startup.sh')
|
252
|
+
end
|
253
|
+
```
|
254
|
+
|
255
|
+
ERB:
|
256
|
+
|
257
|
+
```ruby
|
258
|
+
launch_configuration :startup_lc do
|
259
|
+
ami 'ami-1715317e' # Ubuntu 13.04 US-East-1 ebs amd64
|
260
|
+
instance_type 'm1.small'
|
261
|
+
|
262
|
+
thing = "google.com" # This is accessible within the ERB file!
|
263
|
+
|
264
|
+
user_data ERB.new(File.read('startup.sh.erb')).result(binding)
|
265
|
+
end
|
266
|
+
```
|
267
|
+
|
268
|
+
Using an ERB file is likely the most powerful especially since anything defined within the launch configurations context is available, as well as any other gems required before this.
|
269
|
+
|
270
|
+
Controlling auto scaling groups
|
271
|
+
-------------------------------
|
272
|
+
|
273
|
+
Auto scaling groups define how your network expands as needed and spans multiple availability zones.
|
274
|
+
|
275
|
+
Options:
|
276
|
+
|
277
|
+
- availability_zones - A list of availability zones
|
278
|
+
- min_size/max_size - The min and max number of instances for the auto scaling group
|
279
|
+
- default_cooldown - The number of seconds after a scaling activity completes before any further trigger-related scaling activities can start
|
280
|
+
- desired_capacity - The number of instances that should be running in the group
|
281
|
+
- health_check_grace_period - The number of seconds AWS waits before it befores a health check
|
282
|
+
- health_check_type - The type of health check to perform, `'ELB'` and `'EC2'` are valid options
|
283
|
+
- load_balancer_names - A list of the names of desired load balancers
|
284
|
+
- placement_group - Physical location of your cluster placement group created in EC2
|
285
|
+
- tag - A hash of tags for the instances in the group
|
286
|
+
- launch_configuration - A reference to the launch configuration used by this auto scaling group
|
287
|
+
- vpc_zone_identifier - A comma-separated list of subnet identifiers of Amazon Virtual Private Clouds
|
288
|
+
|
289
|
+
Auto scaling groups only require an availability zone, a min and max size, and a launch configuration.
|
290
|
+
|
291
|
+
```ruby
|
292
|
+
auto_scaling :minimal_asg do
|
293
|
+
launch_configuration :minimal_lc
|
294
|
+
availability_zones ['us-east-1a']
|
295
|
+
min_size 1
|
296
|
+
max_size 1
|
297
|
+
end
|
298
|
+
```
|
299
|
+
|
300
|
+
This will start up a single instance using our most basic launch configuration in US East 1A
|
301
|
+
|
302
|
+
Adding tags can help identify the instances (two are already made for you: Deploy and GitSha)
|
303
|
+
|
304
|
+
```ruby
|
305
|
+
auto_scaling :tagged_asg do
|
306
|
+
launch_configuration :minimal_lc
|
307
|
+
availability_zones ['us-east-1a']
|
308
|
+
min_size 1
|
309
|
+
max_size 1
|
310
|
+
|
311
|
+
tag 'Name' => 'tagged_asg'
|
312
|
+
tag 'NextTag' => 'NewValue'
|
313
|
+
# or
|
314
|
+
tag 'Name' => 'tagged_asg', 'NextTag' => 'NewValue'
|
315
|
+
end
|
316
|
+
```
|
317
|
+
|
318
|
+
Configuring your deploy
|
319
|
+
-----------------------
|
320
|
+
|
321
|
+
A deploy ties the auto scaling groups and possible SSH connections together for application logic
|
322
|
+
|
323
|
+
Options:
|
324
|
+
|
325
|
+
- auto_scaling - Auto scaling group for this deployment
|
326
|
+
- ssh - SSH connection from deployment computer to new instance
|
327
|
+
- migration_ssh - SSH connection from deployment computer to database connection instance (optional: only needed if deployment computer cannot connect to database directly)
|
328
|
+
- do_not_migrate! - Do not try and do a migration (for non-ActiveRecord deploys)
|
329
|
+
- local_ssh - SSH connection from local computer to running instances
|
330
|
+
- stop_command - This command is run before an auto scaling group is run to stop your application gracefully
|
331
|
+
- live_check - 'Local path to query on the instance to verify the application is running'
|
332
|
+
- instance_live_grace_period - The number of seconds to wait for an instance to be live (default: 30 minutes - 1800 seconds)
|
333
|
+
- db_config_path - relative path of your database config file (default: 'config/database.yml')
|
334
|
+
- app_port - which port the application is running on
|
335
|
+
- stop_app_retries - The number of times to retry stopping the application (default: 2)
|
336
|
+
- continue_if_stop_app_fails - When true, will ignore a failure when stopping the application (default: 'false')
|
337
|
+
- post_deploy_command - Command run after the deploy has finished
|
338
|
+
- sleep_before_termination - Time to wait after the new instance spawns and before terminating the old instance (allow time for external load balancers to start working)
|
339
|
+
- ssl - Boolean that enables/disables ssl when doing the live check (default: 'false').
|
340
|
+
- log_files - Paths to files on each instance to tail during deploy (default: '/var/log/syslog')
|
341
|
+
- tail_logs - Boolean that will enable/disable tailing log files (default: 'false')
|
342
|
+
|
343
|
+
A lot of the options for deployment are required, but we've defined some sane defaults.
|
344
|
+
|
345
|
+
A basic deployment could look like:
|
346
|
+
|
347
|
+
```ruby
|
348
|
+
deploy :quick_app do
|
349
|
+
ssh :jump_ssh
|
350
|
+
do_not_migrate!
|
351
|
+
auto_scaling :minimal_asg
|
352
|
+
stop_command 'sudo stop app'
|
353
|
+
live_check '/version'
|
354
|
+
app_port 80
|
355
|
+
end
|
356
|
+
```
|
357
|
+
|
358
|
+
This won't perform a migration, will stop the application with 'sudo stop app' after checking the instance is live at 'localhost:80/version' after SSHing to the instance through jump_ssh.
|
359
|
+
It will use the default of waiting 30 minutes for a deploy before failing, and fail if the previous application does not stop correctly.
|
360
|
+
|
361
|
+
If the server you're deploying from is not behind the same restrictions a development machine is, add a local SSH connection. The local connection will be used when generating commands for connecting to the instances.
|
362
|
+
|
363
|
+
Environments
|
364
|
+
------------
|
365
|
+
|
366
|
+
An environment is a set of deploys that may be run in parallel.
|
367
|
+
This can be useful if you, for example, want to deploy a load balancer at the same time you deploy your backend application.
|
368
|
+
|
369
|
+
Options:
|
370
|
+
|
371
|
+
- deploy - Add a deploy to this environment.
|
372
|
+
|
373
|
+
A basic environment (assuming there is already a deploy named `:quick_app` and another named `:quick_app_worker`):
|
374
|
+
|
375
|
+
```ruby
|
376
|
+
env :staging do
|
377
|
+
deploy :quick_app
|
378
|
+
deploy :quick_app_worker
|
379
|
+
end
|
380
|
+
```
|
381
|
+
|
382
|
+
To run these deploys, the following task can be run:
|
383
|
+
|
384
|
+
```shell
|
385
|
+
$ bundle exec rake aerosol:env:staging
|
386
|
+
```
|
387
|
+
|
388
|
+
Namespace
|
389
|
+
---------
|
390
|
+
|
391
|
+
A namespace will enable branches of a main project to be deployed separately without interfering with auto scaling groups, launch configurations or elastic IPs
|
392
|
+
|
393
|
+
```ruby
|
394
|
+
namespace :test
|
395
|
+
```
|
396
|
+
|
397
|
+
This will prefix all auto scaling groups and launch configurations with `test-` and also the `Deploy` tag that is on each auto scaling group by default.
|
398
|
+
|
399
|
+
Copyright (c) 2013 Swipely, Inc. See LICENSE.txt for further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Copyright Swipely, Inc. All rights reserved.
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift( File.join( File.dirname(__FILE__), 'lib' ) )
|
4
|
+
|
5
|
+
require 'rake'
|
6
|
+
require 'aerosol'
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
require 'cane/rake_task'
|
9
|
+
|
10
|
+
task :default => [:spec, :quality]
|
11
|
+
|
12
|
+
RSpec::Core::RakeTask.new do |t|
|
13
|
+
t.pattern = 'spec/**/*_spec.rb'
|
14
|
+
end
|
15
|
+
|
16
|
+
Cane::RakeTask.new(:quality) do |cane|
|
17
|
+
cane.canefile = '.cane'
|
18
|
+
end
|
data/aerosol.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/aerosol/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Swipely, Inc."]
|
6
|
+
gem.email = %w{tomhulihan@swipely.com bright@swipely.com toddlunter@swipely.com}
|
7
|
+
gem.description = %q{Instance-based deploys made easy}
|
8
|
+
gem.summary = %q{Instance-based deploys made easy}
|
9
|
+
gem.homepage = "https://github.com/swipely/aerosol"
|
10
|
+
gem.license = 'MIT'
|
11
|
+
|
12
|
+
gem.files = `git ls-files`.split($\)
|
13
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
14
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
15
|
+
gem.name = "aerosol"
|
16
|
+
gem.require_paths = %w{lib}
|
17
|
+
gem.version = Aerosol::VERSION
|
18
|
+
gem.add_dependency 'activerecord', '>= 3.2.0'
|
19
|
+
gem.add_dependency 'clamp', '~> 0.6'
|
20
|
+
gem.add_dependency 'excon'
|
21
|
+
gem.add_dependency 'fog', '~> 1.21'
|
22
|
+
gem.add_dependency 'grit'
|
23
|
+
gem.add_dependency 'net-ssh'
|
24
|
+
gem.add_dependency 'net-ssh-gateway'
|
25
|
+
gem.add_dependency 'dockly-util', '~> 0.0.5'
|
26
|
+
gem.add_development_dependency 'cane'
|
27
|
+
gem.add_development_dependency 'pry'
|
28
|
+
gem.add_development_dependency 'rake'
|
29
|
+
gem.add_development_dependency 'rspec', '< 3.0'
|
30
|
+
gem.add_development_dependency 'webmock'
|
31
|
+
gem.add_development_dependency 'vcr'
|
32
|
+
end
|