lobot 0.9.2 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +25 -3
- data/features/ci.feature +8 -0
- data/features/step_definitions/ci_steps.rb +4 -0
- data/lib/generators/lobot/install_generator.rb +0 -1
- data/lib/generators/lobot/templates/bootstrap_server.sh +1 -1
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/default.rb +2 -1
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/xvfb.rb +1 -18
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/curl_devel.rb +3 -0
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/file.rb +19 -0
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/imagemagick.rb +8 -0
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/mongo_2_0.rb +28 -0
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/mysql_5_1.rb +21 -3
- data/lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/my-conf.erb +2 -0
- data/lib/generators/lobot/templates/deploy-ci.rb +1 -1
- data/lib/generators/lobot/templates/soloistrc +2 -0
- data/lib/lobot.rb +10 -0
- data/lib/lobot/railtie.rb +20 -0
- data/lib/{generators/lobot/templates → lobot/tasks}/ci.rake +65 -12
- data/lib/lobot/version.rb +1 -1
- metadata +11 -6
data/README.md
CHANGED
@@ -16,13 +16,17 @@ all you'll need to do is:
|
|
16
16
|
|
17
17
|
rails g lobot:install
|
18
18
|
edit config/ci.yml
|
19
|
-
rake ci:server_start
|
19
|
+
rake ci:server_start
|
20
|
+
cap ci bootstrap
|
21
|
+
cap ci chef
|
22
|
+
|
23
|
+
Read on for an explanation of what each one of these steps does.
|
20
24
|
|
21
25
|
## Install
|
22
26
|
|
23
|
-
Add lobot to your Gemfile
|
27
|
+
Add lobot to your Gemfile, in the development group:
|
24
28
|
|
25
|
-
gem "lobot"
|
29
|
+
gem "lobot", :group => :development
|
26
30
|
|
27
31
|
## Generate
|
28
32
|
Lobot is a Rails 3 generator. Rails 2 can be made to work, but you will need to copy the template files into your project.
|
@@ -58,6 +62,24 @@ Edit config/ci.yml
|
|
58
62
|
|
59
63
|
For security, you can add ci.yml to your .gitignore file and store a ci.yml.example without authentication credentials in your repository
|
60
64
|
|
65
|
+
## Modify the soloistrc if necessary
|
66
|
+
|
67
|
+
Switch postgres to mysql, or add your own recipes for your own dependencies.
|
68
|
+
|
69
|
+
## Let 'er rip
|
70
|
+
|
71
|
+
Launch an instance, allocate and associates an elastic IP and updates ci.yml:
|
72
|
+
|
73
|
+
rake ci:server_start
|
74
|
+
|
75
|
+
Bootstrap the instance using the boostrap_server.sh script generated by Lobot. The script instals ruby prerequisites, creates the app_user account, and installs RVM for that user:
|
76
|
+
|
77
|
+
cap ci bootstrap
|
78
|
+
|
79
|
+
Upload the contents of your chef/cookbooks/ directory, upload the soloistrc, and run chef:
|
80
|
+
|
81
|
+
cap ci chef
|
82
|
+
|
61
83
|
## Dependencies
|
62
84
|
|
63
85
|
* fog
|
data/features/ci.feature
CHANGED
@@ -18,3 +18,11 @@ Feature: CI
|
|
18
18
|
And I bootstrap
|
19
19
|
And I deploy
|
20
20
|
Then CI is green
|
21
|
+
|
22
|
+
Scenario: Installing Lobot on a rails3 project
|
23
|
+
When I create a new Rails project using a Rails template
|
24
|
+
And I vendor Lobot
|
25
|
+
And I put Lobot in the Gemfile
|
26
|
+
And I run bundle install
|
27
|
+
And I run the Lobot generator
|
28
|
+
Then rake reports ci tasks as being available
|
@@ -4,7 +4,6 @@ module Lobot
|
|
4
4
|
|
5
5
|
def create_ci_files
|
6
6
|
template 'ci.yml', 'config/ci.yml'
|
7
|
-
template 'ci.rake', 'lib/tasks/ci.rake'
|
8
7
|
template 'bootstrap_server.sh', 'script/bootstrap_server.sh'
|
9
8
|
template 'deploy-ci.rb', 'config/deploy/ci.rb'
|
10
9
|
template 'capistrano-ci.rb', 'config/capistrano/ci.rb'
|
@@ -39,7 +39,7 @@ set -e
|
|
39
39
|
export APP_USER=$1
|
40
40
|
|
41
41
|
mkdir -p /home/$APP_USER/rvm/src
|
42
|
-
curl -Lskf http://github.com/wayneeseguin/rvm/tarball/
|
42
|
+
curl -Lskf http://github.com/wayneeseguin/rvm/tarball/0f7135af8f0b6139716637d242a82442dd7fef09 | tar xvz -C/home/$APP_USER/rvm/src --strip 1
|
43
43
|
cd "/home/$APP_USER/rvm/src" && ./install
|
44
44
|
|
45
45
|
rvm_include_string='[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"'
|
@@ -1,8 +1,9 @@
|
|
1
1
|
include_recipe "pivotal_server::imagemagick"
|
2
|
-
include_recipe "pivotal_server::postgres"
|
3
2
|
include_recipe "pivotal_server::sqlite"
|
4
3
|
include_recipe "pivotal_server::libxml_prereqs"
|
5
4
|
include_recipe "pivotal_server::nginx"
|
5
|
+
include_recipe "pivotal_server::file"
|
6
|
+
include_recipe "pivotal_server::curl_devel"
|
6
7
|
include_recipe "pivotal_server::ca_cert"
|
7
8
|
include_recipe "pivotal_server::node_js"
|
8
9
|
include_recipe "pivotal_ci::id_rsa"
|
@@ -1,24 +1,7 @@
|
|
1
|
-
# include_recipe "pivotal_server::daemontools"
|
2
|
-
|
3
|
-
# service_name = "xvfb"
|
4
|
-
|
5
1
|
execute "install xvfb" do
|
6
2
|
command "yum -y install xorg-x11-server-Xvfb"
|
7
3
|
end
|
8
4
|
|
9
5
|
execute "install firefox" do
|
10
6
|
command "yum -y install firefox"
|
11
|
-
end
|
12
|
-
|
13
|
-
# execute "make daemontools dir" do
|
14
|
-
# command "mkdir -p /service/#{service_name}"
|
15
|
-
# end
|
16
|
-
#
|
17
|
-
# execute "create run script3" do # srsly! the not_if from mysql was being applied because they had the same name. I kid you not.
|
18
|
-
# command "echo -e '#!/bin/sh\nexec Xvfb :99 -ac -screen 0 1024x768x16' > /service/#{service_name}/run"
|
19
|
-
# # not_if "ls /service/#{service_name}/run"
|
20
|
-
# end
|
21
|
-
#
|
22
|
-
# execute "make run script executable" do
|
23
|
-
# command "chmod 755 /service/#{service_name}/run"
|
24
|
-
# end
|
7
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
src_dir = "/usr/local/src/file"
|
2
|
+
|
3
|
+
run_unless_marker_file_exists("file") do
|
4
|
+
execute "download file src" do
|
5
|
+
command "mkdir -p #{src_dir} && curl -Lsf ftp://ftp.astron.com/pub/file/file-5.08.tar.gz | tar xvz -C#{src_dir} --strip 1"
|
6
|
+
end
|
7
|
+
|
8
|
+
execute "configure file" do
|
9
|
+
command "cd #{src_dir} && ./configure"
|
10
|
+
end
|
11
|
+
|
12
|
+
execute "make file" do
|
13
|
+
command "cd #{src_dir} && make"
|
14
|
+
end
|
15
|
+
|
16
|
+
execute "install file" do
|
17
|
+
command "cd #{src_dir} && make install"
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
include_recipe "pivotal_server::daemontools"
|
2
|
+
|
3
|
+
install_dir = "/usr/local/mongo"
|
4
|
+
|
5
|
+
user "mongo"
|
6
|
+
|
7
|
+
run_unless_marker_file_exists("mongo_2_0") do
|
8
|
+
execute "download mongo" do
|
9
|
+
command "mkdir -p #{install_dir} && curl -Lsf http://downloads.mongodb.org/linux/mongodb-linux-i686-2.0.0.tgz | tar xvz -C#{install_dir} --strip 1"
|
10
|
+
end
|
11
|
+
|
12
|
+
execute "mongo owns #{install_dir}/data" do
|
13
|
+
command "mkdir -p #{install_dir}/data && chown -R mongo #{install_dir}/data"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
execute "create daemontools directory" do
|
18
|
+
command "mkdir -p /service/mongo"
|
19
|
+
end
|
20
|
+
|
21
|
+
execute "create run script" do
|
22
|
+
command "echo -e '#!/bin/sh\nexec /command/setuidgid mongo /usr/local/mongo/bin/mongod --dbpath #{install_dir}/data' > /service/mongo/run"
|
23
|
+
not_if "ls /service/mongo/run"
|
24
|
+
end
|
25
|
+
|
26
|
+
execute "make run script executable" do
|
27
|
+
command "chmod 755 /service/mongo/run"
|
28
|
+
end
|
@@ -18,13 +18,13 @@ end
|
|
18
18
|
|
19
19
|
user "mysql"
|
20
20
|
|
21
|
-
run_unless_marker_file_exists("
|
21
|
+
run_unless_marker_file_exists("mysql_5_1_with_innodb") do
|
22
22
|
execute "download mysql src" do
|
23
23
|
command "mkdir -p #{src_dir} && curl -Lsf http://mysql.he.net/Downloads/MySQL-5.1/mysql-5.1.57.tar.gz | tar xvz -C#{src_dir} --strip 1"
|
24
24
|
end
|
25
25
|
|
26
26
|
execute "configure" do
|
27
|
-
command "./configure --prefix=/usr/local/mysql"
|
27
|
+
command "./configure --prefix=/usr/local/mysql --with-plugins=innobase,myisam"
|
28
28
|
cwd src_dir
|
29
29
|
end
|
30
30
|
|
@@ -48,6 +48,20 @@ run_unless_marker_file_exists("mysql_5_1") do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
file "/etc/ld.so.conf.d/mysql-64.conf" do
|
52
|
+
content "/usr/local/mysql/lib/mysql/"
|
53
|
+
end
|
54
|
+
|
55
|
+
execute "add mysql to ldconf" do
|
56
|
+
command "/sbin/ldconfig"
|
57
|
+
end
|
58
|
+
|
59
|
+
template "/etc/my.cnf" do
|
60
|
+
source "my-conf.erb"
|
61
|
+
owner "mysql"
|
62
|
+
mode "0644"
|
63
|
+
end
|
64
|
+
|
51
65
|
execute "create daemontools directory" do
|
52
66
|
command "mkdir -p /service/mysql"
|
53
67
|
end
|
@@ -87,4 +101,8 @@ end
|
|
87
101
|
|
88
102
|
execute "grant user all rights (this maybe isn't a great idea)" do
|
89
103
|
command "#{install_dir}/bin/mysql -u root -p#{mysql_root_password} -D mysql -r -B -N -e \"GRANT ALL on *.* to '#{mysql_user_name}'@'localhost'\""
|
90
|
-
end
|
104
|
+
end
|
105
|
+
|
106
|
+
execute "insert time zone info" do
|
107
|
+
command "#{install_dir}/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | #{install_dir}/bin/mysql -uroot -p#{mysql_root_password} mysql"
|
108
|
+
end
|
data/lib/lobot.rb
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
require File.expand_path('lobot/version', File.dirname(__FILE__))
|
2
2
|
|
3
3
|
module Lobot
|
4
|
+
def self.rails3?
|
5
|
+
return Rails.version.split(".").first.to_i == 3 if defined? Rails
|
6
|
+
begin
|
7
|
+
Gem::Specification::find_by_name "rails", ">= 3.0"
|
8
|
+
rescue
|
9
|
+
Gem.available? "rails", ">= 3.0"
|
10
|
+
end
|
11
|
+
end
|
4
12
|
end
|
13
|
+
|
14
|
+
require File.expand_path(File.join('lobot', "railtie"), File.dirname(__FILE__)) if Lobot.rails3?
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "rails/railtie"
|
2
|
+
module Lobot
|
3
|
+
class Railtie < Rails::Railtie
|
4
|
+
|
5
|
+
config.before_configuration do
|
6
|
+
old_lobot_rakefile = ::Rails.root.join('lib', 'tasks', 'ci.rake')
|
7
|
+
if old_lobot_rakefile.exist? && !ENV["USE_CI_RAKE"]
|
8
|
+
puts %Q{
|
9
|
+
You no longer need to have ci.rake in your project, as it is now automatically loaded
|
10
|
+
from the Lobot gem. To silence this warning, set "USE_CI_RAKE=true" in your environment
|
11
|
+
or remove ci.rake.
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
rake_tasks do
|
17
|
+
load "lobot/tasks/ci.rake"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -5,7 +5,7 @@ namespace :ci do
|
|
5
5
|
require 'yaml'
|
6
6
|
require 'socket'
|
7
7
|
|
8
|
-
aws_conf_location = File.
|
8
|
+
aws_conf_location = File.join(Dir.pwd, 'config', 'ci.yml')
|
9
9
|
aws_conf = YAML.load_file(aws_conf_location)
|
10
10
|
aws_credentials = aws_conf['credentials']
|
11
11
|
ec2_server_access = aws_conf['ec2_server_access']
|
@@ -64,14 +64,23 @@ namespace :ci do
|
|
64
64
|
:key_name => ec2_key_pair_name,
|
65
65
|
:groups => [security_group_name]
|
66
66
|
)
|
67
|
+
|
68
|
+
unless aws_conf['server']['elastic_ip'] =~ /\d.\.\d.\.\d.\.\d./
|
69
|
+
elastic_ip = aws_connection.addresses.create
|
70
|
+
aws_conf['server']['elastic_ip'] = elastic_ip.public_ip
|
71
|
+
puts "Allocated elastic IP address #{aws_conf['server']['elastic_ip']}"
|
72
|
+
end
|
73
|
+
|
67
74
|
server.wait_for { ready? }
|
68
75
|
|
76
|
+
aws_connection.associate_address(server.id, aws_conf['server']['elastic_ip'])
|
77
|
+
|
69
78
|
socket = false
|
70
79
|
Timeout::timeout(120) do
|
71
80
|
p "Server booted, waiting for SSH."
|
72
81
|
until socket
|
73
82
|
begin
|
74
|
-
socket = TCPSocket.open(server
|
83
|
+
socket = TCPSocket.open(aws_conf['server']['elastic_ip'], 22)
|
75
84
|
rescue Errno::ECONNREFUSED
|
76
85
|
STDOUT << "."
|
77
86
|
STDOUT.flush
|
@@ -83,38 +92,82 @@ namespace :ci do
|
|
83
92
|
p server
|
84
93
|
puts "Server is ready"
|
85
94
|
|
86
|
-
p "Writing server
|
87
|
-
aws_conf["server"].merge!("
|
95
|
+
p "Writing server instance_id(#{server.id}) and elastic IP(#{aws_conf['server']['elastic_ip']}) to ci.yml"
|
96
|
+
aws_conf["server"].merge!("instance_id" => server.id)
|
88
97
|
|
89
98
|
f = File.open(aws_conf_location, "w")
|
90
99
|
f.write(aws_conf.to_yaml)
|
91
100
|
f.close
|
92
101
|
end
|
93
102
|
|
103
|
+
desc "stop(suspend) the CI Server"
|
104
|
+
task :stop do
|
105
|
+
require 'fog'
|
106
|
+
require 'yaml'
|
107
|
+
require 'socket'
|
108
|
+
|
109
|
+
aws_conf_location = File.join(Dir.pwd, 'config', 'ci.yml')
|
110
|
+
aws_conf = YAML.load_file(aws_conf_location)
|
111
|
+
aws_credentials = aws_conf['credentials']
|
112
|
+
server_config = aws_conf['server']
|
113
|
+
|
114
|
+
aws_connection = Fog::Compute.new(
|
115
|
+
:provider => aws_credentials['provider'],
|
116
|
+
:aws_access_key_id => aws_credentials['aws_access_key_id'],
|
117
|
+
:aws_secret_access_key => aws_credentials['aws_secret_access_key']
|
118
|
+
)
|
119
|
+
|
120
|
+
aws_connection.servers.new(:id => server_config['instance_id']).stop
|
121
|
+
end
|
122
|
+
|
123
|
+
desc "start(resume) the CI Server"
|
124
|
+
task :start do
|
125
|
+
require 'fog'
|
126
|
+
require 'yaml'
|
127
|
+
require 'socket'
|
128
|
+
|
129
|
+
aws_conf_location = File.join(Dir.pwd, 'config', 'ci.yml')
|
130
|
+
aws_conf = YAML.load_file(aws_conf_location)
|
131
|
+
aws_credentials = aws_conf['credentials']
|
132
|
+
server_config = aws_conf['server']
|
133
|
+
|
134
|
+
aws_connection = Fog::Compute.new(
|
135
|
+
:provider => aws_credentials['provider'],
|
136
|
+
:aws_access_key_id => aws_credentials['aws_access_key_id'],
|
137
|
+
:aws_secret_access_key => aws_credentials['aws_secret_access_key']
|
138
|
+
)
|
139
|
+
|
140
|
+
server = aws_connection.servers.new(:id => server_config['instance_id'])
|
141
|
+
# server.start
|
142
|
+
server.wait_for { ready? }
|
143
|
+
|
144
|
+
aws_connection.associate_address(server_config['instance_id'], server_config['elastic_ip']) if server_config['elastic_ip']
|
145
|
+
end
|
146
|
+
|
94
147
|
desc "open the CI interface in a browser"
|
95
148
|
task :open do
|
96
|
-
aws_conf_location = File.
|
149
|
+
aws_conf_location = File.join(Dir.pwd, 'config', 'ci.yml')
|
97
150
|
aws_conf = YAML.load_file(aws_conf_location)
|
98
151
|
server_config = aws_conf['server']
|
99
|
-
exec "open http://#{server_config['
|
152
|
+
exec "open http://#{server_config['elastic_ip']}"
|
100
153
|
end
|
101
154
|
|
102
155
|
desc "ssh to CI"
|
103
156
|
task :ssh do
|
104
|
-
aws_conf_location = File.
|
157
|
+
aws_conf_location = File.join(Dir.pwd, 'config', 'ci.yml')
|
105
158
|
aws_conf = YAML.load_file(aws_conf_location)
|
106
159
|
server_config = aws_conf['server']
|
107
|
-
exec "ssh -i #{aws_conf['ec2_server_access']['id_rsa_path']} #{aws_conf['app_user']}@#{server_config['
|
160
|
+
exec "ssh -i #{aws_conf['ec2_server_access']['id_rsa_path']} #{aws_conf['app_user']}@#{server_config['elastic_ip']}"
|
108
161
|
end
|
109
162
|
|
110
163
|
desc "Get build status"
|
111
164
|
task :status do
|
112
165
|
require 'nokogiri'
|
113
|
-
|
114
|
-
ci_conf = YAML.load_file(
|
166
|
+
aws_conf_location = File.join(Dir.pwd, 'config', 'ci.yml')
|
167
|
+
ci_conf = YAML.load_file(aws_conf_location)
|
115
168
|
|
116
|
-
|
117
|
-
latest_build = Nokogiri::XML.parse(
|
169
|
+
jenkins_rss_feed = `curl -s --user #{ci_conf['basic_auth'][0]['username']}:#{ci_conf['basic_auth'][0]['password']} --anyauth http://#{ci_conf['server']['elastic_ip']}/rssAll`
|
170
|
+
latest_build = Nokogiri::XML.parse(jenkins_rss_feed.downcase).css('feed entry:first').first
|
118
171
|
status = !!(latest_build.css("title").first.content =~ /success|stable|back to normal/)
|
119
172
|
if status
|
120
173
|
p "Great Success"
|
data/lib/lobot/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lobot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 4
|
10
|
+
version: 0.9.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew Kocher & Lee Edwards
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-03 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: fog
|
@@ -128,9 +128,12 @@ files:
|
|
128
128
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/files/default/cacert.pem
|
129
129
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/libraries/marker.rb
|
130
130
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/ca_cert.rb
|
131
|
+
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/curl_devel.rb
|
131
132
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/daemontools.rb
|
133
|
+
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/file.rb
|
132
134
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/imagemagick.rb
|
133
135
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/libxml_prereqs.rb
|
136
|
+
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/mongo_2_0.rb
|
134
137
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/mysql_5_1.rb
|
135
138
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/mysql_5_5.rb
|
136
139
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/nginx.rb
|
@@ -138,16 +141,18 @@ files:
|
|
138
141
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/postgres.rb
|
139
142
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/sqlite.rb
|
140
143
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/swap.rb
|
144
|
+
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/my-conf.erb
|
141
145
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/nginx-conf.erb
|
142
146
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/nginx-htaccess.erb
|
143
147
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/nginx-mime-types.erb
|
144
148
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/nginx-run-script.erb
|
145
149
|
- lib/generators/lobot/templates/chef/cookbooks/pivotal_server/templates/default/postgres-run-script.erb
|
146
|
-
- lib/generators/lobot/templates/ci.rake
|
147
150
|
- lib/generators/lobot/templates/ci.yml
|
148
151
|
- lib/generators/lobot/templates/deploy-ci.rb
|
149
152
|
- lib/generators/lobot/templates/soloistrc
|
150
153
|
- lib/lobot.rb
|
154
|
+
- lib/lobot/railtie.rb
|
155
|
+
- lib/lobot/tasks/ci.rake
|
151
156
|
- lib/lobot/version.rb
|
152
157
|
- lobot.gemspec
|
153
158
|
- spec/install_spec.rb
|
@@ -181,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
186
|
requirements: []
|
182
187
|
|
183
188
|
rubyforge_project: lobot
|
184
|
-
rubygems_version: 1.8.
|
189
|
+
rubygems_version: 1.8.6
|
185
190
|
signing_key:
|
186
191
|
specification_version: 3
|
187
192
|
summary: Lobot provides generators of chef recipes to set up CI easily.
|