engineyard-recipes 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +10 -0
- data/README.md +127 -11
- data/Rakefile +5 -0
- data/engineyard-recipes.gemspec +1 -0
- data/features/clone-recipe.feature +32 -0
- data/features/step_definitions/fixture_project_steps.rb +6 -5
- data/features/support/env.rb +1 -0
- data/fixtures/recipes/blank/README.rdoc +1 -0
- data/lib/engineyard-recipes/cli.rb +10 -14
- data/lib/engineyard-recipes/fetch_uri.rb +59 -0
- data/lib/engineyard-recipes/generators/local_recipe_clone_generator.rb +35 -0
- data/lib/engineyard-recipes/generators/local_recipe_clone_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt +3 -0
- data/lib/engineyard-recipes/version.rb +1 -1
- metadata +29 -22
- data/features/step_definitions/jenkins_steps.rb +0 -21
- data/fixtures/bin/README.md +0 -4
- data/fixtures/bin/scp +0 -6
- data/fixtures/cookbooks/main/recipes/default.rb +0 -1
- data/fixtures/cookbooks/redis/recipes/default.rb +0 -0
- data/fixtures/jenkins_boot_sequence/jenkins_booting.html +0 -1
- data/fixtures/jenkins_boot_sequence/jenkins_ready.html +0 -1
- data/fixtures/jenkins_boot_sequence/pre_jenkins_booting.html +0 -1
data/ChangeLog.md
ADDED
data/README.md
CHANGED
@@ -2,31 +2,46 @@
|
|
2
2
|
|
3
3
|
Tools to generate, upload, test and apply chef recipes for Engine Yard Cloud.
|
4
4
|
|
5
|
-
|
5
|
+
## Installation
|
6
6
|
|
7
|
-
|
7
|
+
gem install engineyard-recipes
|
8
8
|
|
9
|
-
|
9
|
+
## Quick Guide
|
10
10
|
|
11
11
|
```
|
12
12
|
$ cd /path/to/my/app
|
13
|
-
$ ey-recipes init
|
14
|
-
|
15
|
-
|
13
|
+
$ ey-recipes init # initial scaffolding for cookbooks
|
14
|
+
$ ey-recipes recipe somepackage
|
15
|
+
$ ey-recipes definition somehelpers specific_helper_method
|
16
|
+
$ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
|
17
|
+
$ ey-recipes clone /tmp/recipes/ey-dnapi
|
18
|
+
|
19
|
+
# then to upload and apply to your environment
|
20
|
+
$ ey recipes upload --apply
|
16
21
|
```
|
17
22
|
|
18
|
-
|
23
|
+
## Usage
|
19
24
|
|
20
|
-
|
25
|
+
Getting started:
|
21
26
|
|
22
27
|
```
|
23
|
-
$
|
28
|
+
$ cd /path/to/my/app
|
29
|
+
$ ey-recipes init
|
30
|
+
create cookbooks/main/attributes/recipe.rb
|
31
|
+
create cookbooks/main/definitions/ey_cloud_report.rb
|
32
|
+
create cookbooks/main/libraries/ruby_block.rb
|
33
|
+
create cookbooks/main/libraries/run_for_app.rb
|
34
|
+
create cookbooks/main/recipes/default.rb
|
24
35
|
```
|
25
36
|
|
26
|
-
|
37
|
+
Quickly generate recipes from git repositories or local folders.
|
38
|
+
|
39
|
+
Either repos that describe a recipe such as [ey-dnapi](https://github.com/damm/ey-dnapi):
|
27
40
|
|
28
41
|
```
|
29
|
-
$
|
42
|
+
$ mkdir /tmp/recipes/
|
43
|
+
$ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
|
44
|
+
$ ey-recipes clone /tmp/recipes/ey-dnapi
|
30
45
|
```
|
31
46
|
|
32
47
|
Generate scaffolding for a package/service.
|
@@ -36,6 +51,7 @@ $ ey-recipes recipe newthing
|
|
36
51
|
create cookbooks/newthing/attributes/recipe.rb
|
37
52
|
create cookbooks/newthing/recipes/default.rb
|
38
53
|
create cookbooks/newthing/recipes/install.rb
|
54
|
+
append cookbooks/main/recipes/default.rb
|
39
55
|
```
|
40
56
|
|
41
57
|
Generate scaffolding for helper functions:
|
@@ -44,3 +60,103 @@ Generate scaffolding for helper functions:
|
|
44
60
|
$ ey-recipes definition myhelpers some_helper
|
45
61
|
create cookbooks/mylibrary/definitions/helper1.rb
|
46
62
|
```
|
63
|
+
|
64
|
+
## Community recipe repos to clone
|
65
|
+
|
66
|
+
### Components
|
67
|
+
|
68
|
+
* mongodb [[repo](https://github.com/engineyard/ey-cloud-recipes/tree/master/cookbooks/mongodb)]
|
69
|
+
|
70
|
+
```
|
71
|
+
$ git clone https://github.com/engineyard/ey-cloud-recipes.git /tmp/recipes/ey-cloud-recipes
|
72
|
+
$ ey-recipes clone /tmp/recipes/ey-cloud-recipes/cookbooks/mongodb
|
73
|
+
```
|
74
|
+
|
75
|
+
* [elasticsearch](http://www.elasticsearch.org/)
|
76
|
+
|
77
|
+
```
|
78
|
+
$ git clone https://github.com/damm/ey-elasticsearch.git /tmp/recipes/ey-elasticsearch
|
79
|
+
$ ey-recipes clone /tmp/recipes/ey-elasticsearch -n elasticsearch
|
80
|
+
```
|
81
|
+
|
82
|
+
* [riak](http://basho.com/products/riak-overview/) [[repo](https://github.com/damm/ey-riak)]
|
83
|
+
|
84
|
+
```
|
85
|
+
$ git clone https://github.com/damm/ey-riak.git /tmp/recipes/ey-riak
|
86
|
+
$ ey-recipes clone /tmp/recipes/ey-riak -n riak
|
87
|
+
```
|
88
|
+
|
89
|
+
* [riaksearch](http://basho.com/products/riak-overview/) [[repo](https://github.com/damm/ey-riaksearch)]
|
90
|
+
|
91
|
+
Either use riak above or riaksearch, not both!
|
92
|
+
|
93
|
+
```
|
94
|
+
$ git clone https://github.com/damm/ey-riaksearch.git /tmp/recipes/ey-riaksearch
|
95
|
+
$ ey-recipes clone /tmp/recipes/ey-riaksearch -n riaksearch
|
96
|
+
```
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
### Environment Customizations
|
101
|
+
|
102
|
+
* database.yml [[repo](https://github.com/damm/ey-database)]
|
103
|
+
|
104
|
+
```
|
105
|
+
$ git clone https://github.com/damm/ey-database.git /tmp/recipes/ey-database
|
106
|
+
$ ey-recipes clone /tmp/recipes/ey-database
|
107
|
+
```
|
108
|
+
|
109
|
+
Also install ey-dnapi below.
|
110
|
+
|
111
|
+
### Helpers
|
112
|
+
|
113
|
+
* ey-emerge - additional helpers to install/use masked packages [[repo](https://github.com/damm/ey-emerge)]
|
114
|
+
|
115
|
+
```
|
116
|
+
$ git clone https://github.com/damm/ey-emerge.git /tmp/recipes/ey-emerge
|
117
|
+
$ ey-recipes clone /tmp/recipes/ey-emerge -n emerge
|
118
|
+
```
|
119
|
+
|
120
|
+
* ey-dnapi - access the internal dna.json metadata via `node[:engineyard]` [[repo](https://github.com/damm/ey-dnapi)]
|
121
|
+
|
122
|
+
```
|
123
|
+
$ git clone https://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
|
124
|
+
$ ey-recipes clone /tmp/recipes/ey-dnapi -n dnapi
|
125
|
+
```
|
126
|
+
|
127
|
+
## Development
|
128
|
+
|
129
|
+
### Tests
|
130
|
+
|
131
|
+
The tests are currently a suite of Cucumber tests that run the generators and assert that specific files are generated. It does not test the generated files/recipes against EY Cloud.
|
132
|
+
|
133
|
+
```
|
134
|
+
bundle exec rake # to run all non-WIP tests
|
135
|
+
bundle exec rake cucumber:wip # to run all WIP tests
|
136
|
+
```
|
137
|
+
|
138
|
+
### CI
|
139
|
+
|
140
|
+
See the latest [CI build results on Travis](http://travis-ci.org/#!/engineyard/engineyard-recipes "Travis CI - Distributed build platform for the open source community") (for ruby 1.8.7, 1.9.3, rbx and jruby)
|
141
|
+
|
142
|
+
From the command line:
|
143
|
+
|
144
|
+
```
|
145
|
+
bundle exec rake travis
|
146
|
+
```
|
147
|
+
|
148
|
+
[![Build Status](https://secure.travis-ci.org/engineyard/engineyard-recipes.png)](http://travis-ci.org/engineyard/engineyard-recipes)
|
149
|
+
|
150
|
+
Not sure why its failing.
|
151
|
+
|
152
|
+
### Release
|
153
|
+
|
154
|
+
1. Push the changes to master. This triggers the CI build on TravisCI.
|
155
|
+
1. Wait for the build to complete successfully.1. Bump the VERSION number in `lib/engineyard-recipes/version.rb`
|
156
|
+
1. Update the ChangeLog.md file
|
157
|
+
1. Commit the changes
|
158
|
+
1. Release
|
159
|
+
|
160
|
+
```
|
161
|
+
bundle exec rake release
|
162
|
+
```
|
data/Rakefile
CHANGED
@@ -11,6 +11,11 @@ namespace :cucumber do
|
|
11
11
|
task :all => [:ok, :wip]
|
12
12
|
end
|
13
13
|
|
14
|
+
desc "Go to TravisCI status page"
|
15
|
+
task :travis do
|
16
|
+
require "launchy"
|
17
|
+
Launchy.open("http://travis-ci.org/#!/engineyard/engineyard-recipes")
|
18
|
+
end
|
14
19
|
desc 'Alias for cucumber:ok'
|
15
20
|
task :cucumber => 'cucumber:ok'
|
16
21
|
|
data/engineyard-recipes.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency("rake", ["~> 0.9.2"])
|
25
25
|
s.add_development_dependency("cucumber", ["~> 1.1.2"])
|
26
26
|
s.add_development_dependency("rspec", ["~> 2.7.0"])
|
27
|
+
s.add_development_dependency("launchy")
|
27
28
|
# s.add_development_dependency("json")
|
28
29
|
# s.add_development_dependency("awesome_print")
|
29
30
|
# s.add_development_dependency("realweb", '~>0.1.6')
|
@@ -6,26 +6,58 @@ Feature: Clone recipe from git repositories
|
|
6
6
|
Given I am in the "rails" project folder
|
7
7
|
When I run local executable "ey-recipes" with arguments "init"
|
8
8
|
|
9
|
+
Scenario: Clone a single recipe from local folder with default recipe name
|
10
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
11
|
+
When I run local executable "ey-recipes" with arguments "clone /tmp/ey-recipes/blank"
|
12
|
+
Then file "cookbooks/blank/README.rdoc" is created
|
13
|
+
And file "cookbooks/blank/README.rdoc" contains "This is a local recipe"
|
14
|
+
And file "cookbooks/main/recipes/default.rb" contains "require_recipe 'blank'"
|
15
|
+
And I should see exactly
|
16
|
+
"""
|
17
|
+
exist cookbooks
|
18
|
+
create cookbooks/blank/README.rdoc
|
19
|
+
append cookbooks/main/recipes/default.rb
|
20
|
+
"""
|
21
|
+
|
22
|
+
Scenario: Clone a single recipe from local folder with alternate recipe name
|
23
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
24
|
+
When I run local executable "ey-recipes" with arguments "clone /tmp/ey-recipes/blank --name myrecipe"
|
25
|
+
Then file "cookbooks/myrecipe/README.rdoc" is created
|
26
|
+
And file "cookbooks/myrecipe/README.rdoc" contains "This is a local recipe"
|
27
|
+
And file "cookbooks/main/recipes/default.rb" contains "require_recipe 'myrecipe'"
|
28
|
+
And I should see exactly
|
29
|
+
"""
|
30
|
+
exist cookbooks
|
31
|
+
create cookbooks/myrecipe/README.rdoc
|
32
|
+
append cookbooks/main/recipes/default.rb
|
33
|
+
"""
|
34
|
+
|
9
35
|
@wip
|
10
36
|
Scenario: Clone a recipe from engineyard/ey-cloud-recipes repository
|
37
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
11
38
|
When I run local executable "ey-recipes" with arguments "clone git://github.com/engineyard/ey-cloud-recipes.git --recipe emerge"
|
12
39
|
Then file "cookbooks/emerge/recipes/default.rb" is created
|
13
40
|
And I should see exactly
|
14
41
|
"""
|
42
|
+
exist cookbooks
|
15
43
|
create cookbooks/emerge/definitions/enable_package.rb
|
16
44
|
create cookbooks/emerge/definitions/package_use.rb
|
17
45
|
create cookbooks/emerge/definitions/update_file.rb
|
18
46
|
create cookbooks/emerge/README.rdoc
|
47
|
+
append cookbooks/main/recipes/default.rb
|
19
48
|
"""
|
20
49
|
|
21
50
|
@wip
|
22
51
|
Scenario: Clone repository as an entire recipe
|
52
|
+
Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
|
23
53
|
When I run local executable "ey-recipes" with arguments "clone git://github.com/damm/ey-dnapi.git --name dnapi"
|
24
54
|
Then file "cookbooks/dnapi/libraries/engineyard.rb" is created
|
25
55
|
And I should see exactly
|
26
56
|
"""
|
57
|
+
exist cookbooks
|
27
58
|
create cookbooks/dnapi/libraries/engineyard.rb
|
28
59
|
create cookbooks/dnapi/README.rdoc
|
60
|
+
append cookbooks/main/recipes/default.rb
|
29
61
|
"""
|
30
62
|
|
31
63
|
|
@@ -6,9 +6,10 @@ Given /^I am in the "([^\"]*)" project folder$/ do |project|
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
Given /^I
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
Given /^I am have a local recipe "([^\"]*)" at "\/tmp\/ey-recipes\/([^"]*)"$/ do |name, repeat_name|
|
10
|
+
name.should == repeat_name
|
11
|
+
fixture_recipe = File.join(@fixtures_path, "recipes", name)
|
12
|
+
FileUtils.rm_rf(File.basename(@tmp_recipes_path))
|
13
|
+
FileUtils.mkdir_p(File.basename(@tmp_recipes_path))
|
14
|
+
FileUtils.cp_r(fixture_recipe, @tmp_recipes_path)
|
14
15
|
end
|
data/features/support/env.rb
CHANGED
@@ -10,6 +10,7 @@ Before do
|
|
10
10
|
@home_path = File.expand_path(File.join(@tmp_root, "home"))
|
11
11
|
@lib_path = File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
12
12
|
@fixtures_path = File.expand_path(File.dirname(__FILE__) + "/../../fixtures")
|
13
|
+
@tmp_recipes_path = "/tmp/ey-recipes"
|
13
14
|
FileUtils.rm_rf @tmp_root
|
14
15
|
FileUtils.mkdir_p @home_path
|
15
16
|
ENV['HOME'] = @home_path
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a local recipe
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'engineyard-recipes/thor-ext/actions/directory'
|
3
|
+
require 'engineyard-recipes/fetch_uri'
|
3
4
|
|
4
5
|
module Engineyard
|
5
6
|
module Recipes
|
@@ -23,6 +24,15 @@ module Engineyard
|
|
23
24
|
Engineyard::Recipes::Generators::DefinitionGenerator.start([recipe_name, definition_name])
|
24
25
|
end
|
25
26
|
|
27
|
+
desc "clone URI", "Clone a recipe into cookbook. URI can be git or local path."
|
28
|
+
method_option :name, :aliases => ['-n'], :desc => "Specify name of recipe. Defaults to base name."
|
29
|
+
def clone(folder_path) # TODO support git URIs
|
30
|
+
require 'engineyard-recipes/generators/local_recipe_clone_generator'
|
31
|
+
generator = Engineyard::Recipes::Generators::LocalRecipeCloneGenerator
|
32
|
+
local_cookbook_path, recipe_name = FetchUri.fetch_recipe(folder_path, generator.source_root, options["name"])
|
33
|
+
generator.start([recipe_name])
|
34
|
+
end
|
35
|
+
|
26
36
|
desc "version", "show version information"
|
27
37
|
def version
|
28
38
|
require 'engineyard-recipes/version'
|
@@ -46,20 +56,6 @@ module Engineyard
|
|
46
56
|
exit
|
47
57
|
end
|
48
58
|
|
49
|
-
# Returns the [host, port] for the target Recipes CI server
|
50
|
-
def host_port(options)
|
51
|
-
require "recipes"
|
52
|
-
require "recipes/config"
|
53
|
-
if base_uri = ::Recipes::Config.config['base_uri']
|
54
|
-
uri = URI.parse(::Recipes::Config.config['base_uri'])
|
55
|
-
host = uri.host
|
56
|
-
port = uri.port
|
57
|
-
end
|
58
|
-
host = options["host"] if options["host"]
|
59
|
-
port = options["port"] || port || '80'
|
60
|
-
[host, port]
|
61
|
-
end
|
62
|
-
|
63
59
|
def no_environments_discovered
|
64
60
|
say "No environments with name recipes, recipes_server, recipes_production, recipes_server_production.", :red
|
65
61
|
say "Either:"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Engineyard::Recipes
|
2
|
+
module FetchUri
|
3
|
+
extend self
|
4
|
+
|
5
|
+
# Fetch the target at URI (git url or local folder path)
|
6
|
+
#
|
7
|
+
# Returns a tuple:
|
8
|
+
# * path to a local folder structure that contains "cookbooks/<recipe name>"
|
9
|
+
# * recipe_name
|
10
|
+
def fetch_recipe(uri, source_root, recipe_name = nil)
|
11
|
+
if File.exists?(uri)
|
12
|
+
normalize_fetched_project(uri, source_root, recipe_name)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# Takes a folder that is either a cookbooks/<recipes> structure, or
|
17
|
+
# assumed to be a singular <recipe>/
|
18
|
+
# Copies it into +store_path+ and resulting folder
|
19
|
+
# guaranteed to be in cookbooks/<recipes> structure
|
20
|
+
#
|
21
|
+
# For example, if the +path+ is:
|
22
|
+
# path/
|
23
|
+
# ey-dnapi/
|
24
|
+
# libraries/
|
25
|
+
# engineyard.rb
|
26
|
+
#
|
27
|
+
# Then the resulting +store_path+ will be:
|
28
|
+
# tmpdir/
|
29
|
+
# cookbooks/
|
30
|
+
# ey-dnapi/
|
31
|
+
# libraries/
|
32
|
+
# engineyard.rb
|
33
|
+
#
|
34
|
+
# If +path+/cookbooks exists, then +store_path+
|
35
|
+
# will be a duplicate of +path+
|
36
|
+
#
|
37
|
+
# Can override the +<recipe>+ name with +recipe_name+
|
38
|
+
#
|
39
|
+
# Returns a tuple:
|
40
|
+
# * path to a local folder structure that contains "cookbooks/<recipe name>"
|
41
|
+
# * recipe_name
|
42
|
+
def normalize_fetched_project(path, store_path, recipe_name = nil)
|
43
|
+
recipe_name ||= File.basename(path)
|
44
|
+
FileUtils.rm_rf(store_path)
|
45
|
+
FileUtils.mkdir_p(store_path)
|
46
|
+
initial_storage = Dir.mktmpdir
|
47
|
+
initial_storage_cookbooks = File.join(initial_storage, "cookbooks")
|
48
|
+
if File.directory?(File.join(path, "cookbooks"))
|
49
|
+
# FIXME untested
|
50
|
+
FileUtils.cp_r("#{path}/", initial_storage)
|
51
|
+
else
|
52
|
+
FileUtils.mkdir_p(initial_storage_cookbooks)
|
53
|
+
FileUtils.cp_r(path, File.join(initial_storage, "cookbooks", recipe_name))
|
54
|
+
end
|
55
|
+
FileUtils.cp_r(initial_storage_cookbooks, store_path)
|
56
|
+
[store_path, recipe_name]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
module Engineyard::Recipes
|
4
|
+
module Generators
|
5
|
+
class LocalRecipeCloneGenerator < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
argument :recipe_name
|
9
|
+
|
10
|
+
def self.source_root
|
11
|
+
@tmpdir ||= Dir.mktmpdir
|
12
|
+
end
|
13
|
+
|
14
|
+
def install_cookbooks
|
15
|
+
directory "cookbooks"
|
16
|
+
end
|
17
|
+
|
18
|
+
def auto_require_package
|
19
|
+
file = "cookbooks/main/recipes/default.rb"
|
20
|
+
file_path = File.join(destination_root, "cookbooks/main/recipes/default.rb")
|
21
|
+
unless File.exists?(file_path)
|
22
|
+
puts "Skipping auto-require of package recipe: #{file} is missing"
|
23
|
+
else
|
24
|
+
require_recipe = "require_recipe '#{recipe_name}'"
|
25
|
+
append_to_file file, require_recipe
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def say(msg, color = nil)
|
31
|
+
color ? shell.say(msg, color) : shell.say(msg)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-11-15 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70096827738600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.14.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70096827738600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: engineyard
|
27
|
-
requirement: &
|
27
|
+
requirement: &70096827735860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.4.6
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70096827735860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70096827733600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.9.2
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70096827733600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
requirement: &
|
49
|
+
requirement: &70096827730720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.1.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70096827730720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70096827722540 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,18 @@ dependencies:
|
|
65
65
|
version: 2.7.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70096827722540
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: launchy
|
71
|
+
requirement: &70096827719420 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70096827719420
|
69
80
|
description: Tools to generate, upload, test and apply chef recipes for Engine Yard
|
70
81
|
Cloud.
|
71
82
|
email:
|
@@ -77,6 +88,7 @@ extra_rdoc_files: []
|
|
77
88
|
files:
|
78
89
|
- .gitignore
|
79
90
|
- .travis.yml
|
91
|
+
- ChangeLog.md
|
80
92
|
- Gemfile
|
81
93
|
- README.md
|
82
94
|
- Rakefile
|
@@ -89,21 +101,15 @@ files:
|
|
89
101
|
- features/step_definitions/api_steps.rb
|
90
102
|
- features/step_definitions/common_steps.rb
|
91
103
|
- features/step_definitions/fixture_project_steps.rb
|
92
|
-
- features/step_definitions/jenkins_steps.rb
|
93
104
|
- features/support/common.rb
|
94
105
|
- features/support/env.rb
|
95
106
|
- features/support/matchers.rb
|
96
|
-
- fixtures/bin/README.md
|
97
|
-
- fixtures/bin/scp
|
98
|
-
- fixtures/cookbooks/main/recipes/default.rb
|
99
|
-
- fixtures/cookbooks/redis/recipes/default.rb
|
100
|
-
- fixtures/jenkins_boot_sequence/jenkins_booting.html
|
101
|
-
- fixtures/jenkins_boot_sequence/jenkins_ready.html
|
102
|
-
- fixtures/jenkins_boot_sequence/pre_jenkins_booting.html
|
103
107
|
- fixtures/projects/rails/Gemfile
|
104
108
|
- fixtures/projects/rails/Rakefile
|
109
|
+
- fixtures/recipes/blank/README.rdoc
|
105
110
|
- lib/engineyard-recipes.rb
|
106
111
|
- lib/engineyard-recipes/cli.rb
|
112
|
+
- lib/engineyard-recipes/fetch_uri.rb
|
107
113
|
- lib/engineyard-recipes/generators/definition_generator.rb
|
108
114
|
- lib/engineyard-recipes/generators/definition_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
|
109
115
|
- lib/engineyard-recipes/generators/init_generator.rb
|
@@ -112,6 +118,8 @@ files:
|
|
112
118
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/ruby_block.rb
|
113
119
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/run_for_app.rb
|
114
120
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/recipes/default.rb
|
121
|
+
- lib/engineyard-recipes/generators/local_recipe_clone_generator.rb
|
122
|
+
- lib/engineyard-recipes/generators/local_recipe_clone_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
|
115
123
|
- lib/engineyard-recipes/generators/recipe_generator.rb
|
116
124
|
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/attributes/recipe.rb.tt
|
117
125
|
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/default.rb.tt
|
@@ -132,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
140
|
version: '0'
|
133
141
|
segments:
|
134
142
|
- 0
|
135
|
-
hash:
|
143
|
+
hash: 1147243042889159238
|
136
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
145
|
none: false
|
138
146
|
requirements:
|
@@ -141,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
149
|
version: '0'
|
142
150
|
segments:
|
143
151
|
- 0
|
144
|
-
hash:
|
152
|
+
hash: 1147243042889159238
|
145
153
|
requirements: []
|
146
154
|
rubyforge_project: engineyard-recipes
|
147
155
|
rubygems_version: 1.8.6
|
@@ -156,7 +164,6 @@ test_files:
|
|
156
164
|
- features/step_definitions/api_steps.rb
|
157
165
|
- features/step_definitions/common_steps.rb
|
158
166
|
- features/step_definitions/fixture_project_steps.rb
|
159
|
-
- features/step_definitions/jenkins_steps.rb
|
160
167
|
- features/support/common.rb
|
161
168
|
- features/support/env.rb
|
162
169
|
- features/support/matchers.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
Given /^I want to fake out the boot sequence of Recipes$/ do
|
2
|
-
base_path = File.join(File.dirname(__FILE__) + "/../../fixtures/Recipes_boot_sequence/")
|
3
|
-
FakeWeb.register_uri(:get, "http://app-master-hostname.compute-1.amazonaws.com/", [
|
4
|
-
{:body => File.read(base_path + "pre_Recipes_booting.html")},
|
5
|
-
{:body => File.read(base_path + "Recipes_booting.html")},
|
6
|
-
{:body => File.read(base_path + "Recipes_ready.html")}
|
7
|
-
])
|
8
|
-
end
|
9
|
-
|
10
|
-
Given /^I have public key "([^"]*)" on host "([^"]*)"$/ do |public_key_value, host|
|
11
|
-
mock_target = File.expand_path("../../../tmp/scp_mock", __FILE__)
|
12
|
-
File.open(mock_target, "w") { |file| file << public_key_value }
|
13
|
-
end
|
14
|
-
|
15
|
-
Given /^I set "([^"]*)" as the default Recipes server$/ do |host|
|
16
|
-
require "Recipes"
|
17
|
-
require "Recipes/config"
|
18
|
-
Recipes::Api.setup_base_url(:host => host, :port => 80)
|
19
|
-
Recipes::Api.send(:cache_base_uri)
|
20
|
-
end
|
21
|
-
|
data/fixtures/bin/README.md
DELETED
data/fixtures/bin/scp
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require_recipe 'redis'
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
Please wait while Recipes is getting ready to work
|
@@ -1 +0,0 @@
|
|
1
|
-
Recipes is up!
|
@@ -1 +0,0 @@
|
|
1
|
-
This is some page before the instance is launched.
|