lobot 0.10.1 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -2,21 +2,21 @@ Lobot: Your Chief Administrative Aide on Cloud City
2
2
  ============================
3
3
 
4
4
  ![Lobot](http://i.imgur.com/QAkd7.jpg)
5
- ###A "one click" solution for deploying CI to EC2
5
+ ###Easily create your CI server on EC2
6
6
 
7
- Lando Calrissian relies on Lobot to keep Cloud City afloat, and now you can rely on Lobot to keep your continuous integration server running in the cloud. Lobot is a gem that will help you spin-up, bootstrap, and install Jenkins for CI for your Rails app on Amazon EC2.
7
+ Lando Calrissian relies on Lobot to keep Cloud City afloat, and now you can rely on Lobot to get your continuous integration server running in the cloud. Lobot is a gem that will help you spin-up, bootstrap, and install Jenkins or TeamCity for CI for your Rails app on Amazon EC2.
8
8
 
9
9
  # What do I get?
10
10
 
11
- * rake tasks for starting a CI instance
12
- * capistrano tasks for bootstrapping and deploying to an EC2 instance
13
- * chef recipes for configuring a Centos server to run Jenkins and build Rails projects.
11
+ * Rake tasks for creating, starting, stopping, or destroying your CI srever on EC2
12
+ * Capistrano tasks for bootstrapping the Centos EC2 instance
13
+ * Chef recipes for configuring the instance to run Jenkins and build Rails projects
14
14
 
15
- all you'll need to do is run the following commands:
15
+ After you add lobot to your Gemfile, all you'll need to do is run the following commands:
16
16
 
17
- rails g lobot:install
17
+ rails g lobot:install [jenkins|teamcity]
18
18
  rails g lobot:config
19
- rake ci:server_start
19
+ rake ci:create_server
20
20
  cap ci bootstrap
21
21
  cap ci chef
22
22
 
@@ -31,10 +31,17 @@ Add lobot to your Gemfile, in the development group:
31
31
  ## Generate
32
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.
33
33
 
34
- rails g lobot:install
34
+ ### For Jenkins:
35
+
36
+ rails g lobot:install jenkins
37
+
38
+ ### For TeamCity:
39
+ Lobot only creates your EC2 instance and installs the build server. Configuration for TeamCity still needs to be done manually.
40
+
41
+ rails g lobot:install teamcity
35
42
 
36
43
  ## Setup
37
- You can use a generator to interactively generate the config/ci.yml that includes some reasonable defaults and explanations
44
+ You can use a generator to interactively generate the config/ci.yml that includes some reasonable defaults and explanations.
38
45
 
39
46
  rails g lobot:config
40
47
 
@@ -52,18 +59,25 @@ Alternatively, manually edit config/ci.yml
52
59
  aws_secret_access_key: The Secret Access Key for your Amazon AWS account
53
60
  provider: AWS # leave this one alone
54
61
  server:
55
- name: run 'rake ci:server_start to populate'
56
- instance_id: run 'rake ci:server_start to populate'
62
+ name: run 'rake ci:create_server to populate'
63
+ instance_id: run 'rake ci:create_server to populate'
57
64
  build_command: ./script/ci_build.sh
58
65
  ec2_server_access:
59
66
  key_pair_name: myapp_ci
60
67
  id_rsa_path: ~/.ssh/id_rsa
61
68
  github_private_ssh_key_path: ~/.ssh/id_rsa
62
69
 
70
+ ## Adjust Defaults (Optional)
71
+ In your ci.yml, there are defaults set for values that have the recommened value. For example, the instance size used for EC2 is set to "m1.large", which costs $230/month.
72
+ If you don't need to increase your memory size for Jenkins or TeamCity, you could elect to use "c1.medium" instead which costs about half that.
73
+ You can also save on EC2 costs by using a tool like cimonitor or ylastic to schedule when your instances are online.
74
+
63
75
  For security, the lobot:install task added config/ci.yml to the .gitignore file since it includes sensitive AWS credentials and your CI users password.
64
76
  Keep in mind that the default build script ci_build.sh uses the headless gem and jasmine. You'll want to add those to your Gemfile or change your build command.
65
77
 
66
- At this point you will need to create a commit of the files generated or modified and push those changes to your remote git repository so jenkins can execute your build command.
78
+ ## Commit and push your changes
79
+
80
+ At this point you will need to create a commit of the files generated or modified and push those changes to your remote git repository so Jenkins can execute your build command.
67
81
 
68
82
  ## Modify the soloistrc if necessary
69
83
 
@@ -73,17 +87,17 @@ Switch postgres to mysql, or add your own recipes for your own dependencies.
73
87
 
74
88
  1. Launch an instance, allocate and associates an elastic IP and updates ci.yml:
75
89
 
76
- rake ci:server_start
90
+ rake ci:create_server
77
91
 
78
92
  2. 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:
79
93
 
80
- cap ci bootstrap
94
+ cap ci bootstrap
81
95
 
82
96
  3. Upload the contents of your chef/cookbooks/ directory, upload the soloistrc, and run chef:
83
97
 
84
- cap ci chef
98
+ cap ci chef
85
99
 
86
- Your lobot instance should now be up and running. You will be able to access your CI server at: http://<your instance address>/ with the username and password you chose during configuration.
100
+ Your lobot instance should now be up and running. You will be able to access your CI server at: http://&lt;your instance address&gt;/ with the username and password you chose during configuration.
87
101
  For more information about Jenkins CI, see http://jenkins-ci.org/
88
102
 
89
103
  ## Troubleshooting
@@ -94,11 +108,15 @@ Shell access for your instance
94
108
 
95
109
  Terminating your instance and deallocating the elastic IP
96
110
 
97
- rake ci:terminate
111
+ rake ci:destroy_server
98
112
 
99
113
  Suspending your instance
100
114
 
101
- rake ci:stop
115
+ rake ci:stop_server
116
+
117
+ Rstarting a server
118
+
119
+ rake ci:start_server
102
120
 
103
121
  ## Add your new CI instance to [cimonitor](http://github.com/pivotal/cimonitor) and CCMenu
104
122
 
data/features/ci.feature CHANGED
@@ -9,17 +9,17 @@ Feature: CI
9
9
  And I vendor Lobot
10
10
  And I put Lobot in the Gemfile
11
11
  And I run bundle install
12
- And I run the Lobot generator
12
+ And I run the Lobot generator for "Jenkins"
13
13
  Then rake reports ci tasks as being available
14
14
 
15
15
  @aws
16
- Scenario: Install CI on Amazon AWS using new Rails template
16
+ Scenario: Install Jenkins CI on Amazon AWS using new Rails template
17
17
  When I create a new Rails project
18
18
  And I vendor Lobot
19
19
  And I put Lobot in the Gemfile
20
20
  And I add a gem with an https://github.com source
21
21
  And I run bundle install
22
- And I run the Lobot generator
22
+ And I run the Lobot generator for "Jenkins"
23
23
  And I enter my info into the ci.yml file
24
24
  And I make changes to be committed
25
25
  And I push to git
@@ -27,3 +27,19 @@ Feature: CI
27
27
  And I bootstrap
28
28
  And I deploy
29
29
  Then CI is green
30
+
31
+ @aws
32
+ Scenario: Install TeamCity CI on Amazon AWS using new Rails template
33
+ When I create a new Rails project
34
+ And I vendor Lobot
35
+ And I put Lobot in the Gemfile
36
+ And I add a gem with an https://github.com source
37
+ And I run bundle install
38
+ And I run the Lobot generator for "TeamCity"
39
+ And I enter my info into the ci.yml file
40
+ And I make changes to be committed
41
+ And I push to git
42
+ And I start the server
43
+ And I bootstrap
44
+ And I deploy
45
+ Then TeamCity is installed
@@ -37,8 +37,8 @@ When /^I run bundle install$/ do
37
37
  system!('cd testapp && bundle exec gem list | grep lobot')
38
38
  end
39
39
 
40
- When /^I run the Lobot generator$/ do
41
- system!('cd testapp && rails generate lobot:install')
40
+ When /^I run the Lobot generator for "([^"]*)"$/ do |build_server_name|
41
+ system!("cd testapp && rails generate lobot:install #{build_server_name}")
42
42
  system!('ls testapp | grep -s soloistrc')
43
43
  end
44
44
 
@@ -92,7 +92,7 @@ When /^I push to git$/ do
92
92
  end
93
93
 
94
94
  When /^I start the server$/ do
95
- system! "cd testapp && bundle exec rake ci:server_start"
95
+ system! "cd testapp && bundle exec rake ci:create_server"
96
96
  end
97
97
 
98
98
  When /^I bootstrap$/ do
@@ -113,5 +113,17 @@ Then /^CI is green$/ do
113
113
  end
114
114
 
115
115
  Then /^rake reports ci tasks as being available$/ do
116
- `cd testapp && bundle exec rake -T`.should include("ci:start")
116
+ `cd testapp && bundle exec rake -T`.should include("ci:start_server")
117
117
  end
118
+
119
+ Then /^TeamCity is installed$/ do
120
+ ci_conf_location = 'testapp/config/ci.yml'
121
+ ci_yml = YAML.load_file(ci_conf_location)
122
+
123
+ Timeout::timeout(400) do
124
+ until system("wget http://#{ci_yml['server']['elastic_ip']}:8111")
125
+ sleep 5
126
+ end
127
+ end
128
+ end
129
+
@@ -8,5 +8,5 @@ def system!(str)
8
8
  end
9
9
 
10
10
  After '@aws' do
11
- system "cd #{LOBOT_TEMP_DIRECTORY}/testapp && rake ci:terminate" unless ENV["KEEP_INSTANCE"]
11
+ system "cd #{LOBOT_TEMP_DIRECTORY}/testapp && rake ci:destroy_server" unless ENV["KEEP_INSTANCE"]
12
12
  end
@@ -23,6 +23,8 @@ module Lobot
23
23
  'provider' => "AWS"
24
24
  },
25
25
  'server' => {
26
+ 'name' => nil,
27
+ 'instance_id' => nil,
26
28
  'flavor_id' => "m1.large",
27
29
  'security_group' => "ci_servers",
28
30
  'ssh_port' => "22"
@@ -93,7 +95,7 @@ module Lobot
93
95
  * For a tutorial on this see: http://open.bsdcow.org/histerical/tutorials/ssh_pubkey_auth#1.2
94
96
  EOS
95
97
  while true do
96
- id_rsa_path = ask("Path to SSH Private Key for EC2 Access [#{config['ec2_server_access']['id_rsa_path']}]:", :bold)
98
+ id_rsa_path = ask("SSH Private Key for EC2 Access [#{config['ec2_server_access']['id_rsa_path'].split('/').last}]:", :bold)
97
99
  config['ec2_server_access']['id_rsa_path'] = id_rsa_path if id_rsa_path != ""
98
100
  if config['ec2_server_access']['id_rsa_path'] != File.expand_path(config['ec2_server_access']['id_rsa_path'])
99
101
  config['ec2_server_access']['id_rsa_path'] = File.expand_path(File.join(ENV['HOME'], '.ssh', config['ec2_server_access']['id_rsa_path']))
@@ -111,7 +113,7 @@ module Lobot
111
113
  * repository you entered above. On github this will be listed here: https://github.com/settings/ssh
112
114
  EOS
113
115
  while true do
114
- github_private_ssh_key_path = ask("Path to SSH Private Key for Github [#{config['github_private_ssh_key_path']}]:", :bold)
116
+ github_private_ssh_key_path = ask("SSH Private Key for Github [#{config['github_private_ssh_key_path'].split('/').last}]:", :bold)
115
117
  config['github_private_ssh_key_path'] = github_private_ssh_key_path if github_private_ssh_key_path != ""
116
118
  if config['github_private_ssh_key_path'] != File.expand_path(config['github_private_ssh_key_path'])
117
119
  config['github_private_ssh_key_path'] = File.expand_path(File.join(ENV['HOME'], '.ssh', config['github_private_ssh_key_path']))
@@ -132,8 +134,8 @@ module Lobot
132
134
 
133
135
  say "\n\nconfig/ci.yml configured:\n#{File.read(Rails.root.join('config/ci.yml'))}\n"
134
136
  say "You can edit this file to change any additional defaults."
135
- say "Before continuing, be sure to push uncommitted changes to your git repository.", :red
136
- say "For next steps, see README.md"
137
+ say "Before continuing, be sure to push uncommitted changes to your git repository.", :green
138
+ say "For next steps, see the lobot README.md"
137
139
  end
138
140
  end
139
141
  end
@@ -1,6 +1,7 @@
1
1
  module Lobot
2
2
  class InstallGenerator < Rails::Generators::Base
3
3
  source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
4
+ argument :build_server, :type => :string, :default => "Jenkins"
4
5
 
5
6
  def create_ci_files
6
7
  template 'ci.yml', 'config/ci.yml'
@@ -30,5 +31,13 @@ module Lobot
30
31
  directory 'chef', 'chef'
31
32
  end
32
33
 
34
+ def add_ci_recipe_to_default
35
+ server_name = build_server.downcase
36
+ server_name = "jenkins" if build_server.blank?
37
+
38
+ # append jenkins or teamcity recipe based on the user's choice
39
+ append_to_file "chef/cookbooks/pivotal_ci/recipes/default.rb", %Q{include_recipe "pivotal_ci::#{server_name}"}
40
+ end
41
+
33
42
  end
34
43
  end
@@ -8,4 +8,3 @@ include_recipe "pivotal_server::ca_cert"
8
8
  include_recipe "pivotal_server::node_js"
9
9
  include_recipe "pivotal_ci::id_rsa"
10
10
  include_recipe "pivotal_ci::fonts"
11
- include_recipe "pivotal_ci::jenkins"
@@ -19,7 +19,7 @@ execute "download git plugin" do
19
19
  user username
20
20
  end
21
21
 
22
- execute "make projec#t dir" do
22
+ execute "make project dir" do
23
23
  command "mkdir -p /home/#{username}/.jenkins/jobs/#{ENV['APP_NAME']}"
24
24
  user username
25
25
  end
@@ -0,0 +1,43 @@
1
+ include_recipe "pivotal_server::daemontools"
2
+ include_recipe "pivotal_ci::xvfb"
3
+ include_recipe "pivotal_ci::git_config"
4
+
5
+ username = ENV['SUDO_USER'].strip
6
+ user_home = ENV['HOME']
7
+
8
+ install_dir = "#{user_home}"
9
+ tar_location = "#{install_dir}/teamcity.tar.gz"
10
+
11
+ execute "download teamcity" do
12
+ command "mkdir -p #{install_dir} && curl -Lsf http://download.jetbrains.com/teamcity/TeamCity-7.0.2a.tar.gz -o #{tar_location}"
13
+ user username
14
+ not_if { File.exists?(tar_location) }
15
+ end
16
+
17
+ execute "unpack teamcity" do
18
+ command "cd #{install_dir} && tar xfz #{tar_location} && mkdir -p #{install_dir}/TeamCity/logs"
19
+ user username
20
+ group username
21
+ not_if { File.exists?("#{install_dir}/TeamCity") }
22
+ end
23
+
24
+ template "/etc/init.d/teamcity" do
25
+ source "teamcity-initd.erb"
26
+ variables(
27
+ :username => username
28
+ )
29
+ mode 0755
30
+ end
31
+
32
+ execute "Start TeamCity" do
33
+ # while this runs successfully, it doesn't successfully start TeamCity. Rebooting instead.
34
+ command "/etc/init.d/teamcity start"
35
+ end
36
+
37
+ execute "Adding TeamCity to init.d" do
38
+ command "chkconfig --add teamcity"
39
+ end
40
+
41
+ execute "Reboot the instance to bring up TeamCity" do
42
+ command "sudo reboot"
43
+ end
@@ -0,0 +1,44 @@
1
+ #!/bin/sh
2
+
3
+ # chkconfig: 345 86 16
4
+
5
+ # description: TeamCity service #
6
+ #
7
+
8
+ export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64
9
+
10
+ start(){
11
+ echo "Starting TeamCity"
12
+ /command/setuidgid <%= @username %> /home/<%= @username %>/TeamCity/bin/startup.sh
13
+ /command/setuidgid <%= @username %> /home/<%= @username %>/TeamCity/buildAgent/bin/agent.sh start
14
+ }
15
+
16
+ stop(){
17
+ echo "Stopping TeamCity"
18
+ /command/setuidgid <%= @username %> /home/<%= @username %>/TeamCity/bin/shutdown.sh
19
+ /command/setuidgid <%= @username %> /home/<%= @username %>/TeamCity/buildAgent/bin/agent.sh stop kill
20
+ }
21
+
22
+ restart(){
23
+ echo "Restarting TeamCity"
24
+ stop
25
+ start
26
+ }
27
+
28
+ case "$1" in
29
+ start)
30
+ start;;
31
+
32
+ stop)
33
+ stop;;
34
+
35
+ restart)
36
+ restart;;
37
+ *)
38
+
39
+ echo $"Usage: $0 {start|stop|restart}"
40
+ exit 1
41
+ esac
42
+
43
+ exit 0
44
+
@@ -19,4 +19,4 @@ RAILS_ENV=test rake db:version > /dev/null || rake db:create
19
19
 
20
20
  RAILS_ENV=development rake db:migrate test:prepare
21
21
 
22
- rake ci:headlessly['rake spec'] --trace && rake ci:headlessly['rake jasmine:ci'] --trace
22
+ rake ci:headlessly['rake'] --trace
@@ -1,6 +1,6 @@
1
1
  namespace :ci do
2
2
  desc "Spin up CI server on amazon"
3
- task :server_start do
3
+ task :create_server do
4
4
  require 'fog'
5
5
  require 'yaml'
6
6
  require 'socket'
@@ -29,7 +29,7 @@ namespace :ci do
29
29
  p security_group
30
30
  end
31
31
 
32
- PORTS_TO_OPEN = [22, 443, 80]
32
+ PORTS_TO_OPEN = [22, 443, 80, 8111]
33
33
  PORTS_TO_OPEN.each do |port|
34
34
  is_in_security_group = !!security_group.ip_permissions.detect{|group| (group['fromPort']..group['toPort']).include?(port) && group['ipRanges'].detect{|range| range["cidrIp"]== "0.0.0.0/0" } }
35
35
 
@@ -104,7 +104,7 @@ namespace :ci do
104
104
  end
105
105
 
106
106
  desc "terminate the CI Server and release IP"
107
- task :terminate do
107
+ task :destroy_server do
108
108
  puts "Terminating the CI Server and releasing IP..."
109
109
  require 'fog'
110
110
  require 'yaml'
@@ -126,7 +126,7 @@ namespace :ci do
126
126
  end
127
127
 
128
128
  desc "stop(suspend) the CI Server"
129
- task :stop do
129
+ task :stop_server do
130
130
  puts "Stopping (suspending) the CI Server..."
131
131
  require 'fog'
132
132
  require 'yaml'
@@ -147,7 +147,7 @@ namespace :ci do
147
147
  end
148
148
 
149
149
  desc "start(resume) the CI Server"
150
- task :start do
150
+ task :start_server do
151
151
  require 'fog'
152
152
  require 'yaml'
153
153
  require 'socket'
@@ -258,4 +258,11 @@ namespace :ci do
258
258
  end
259
259
  exit exit_code
260
260
  end
261
+
262
+ #aliases
263
+ desc "maybe"
264
+ task "server:create" => "ci:create_server"
265
+ task "server:start" => "ci:start_server"
266
+ task "server:destroy" => "ci:destroy_server"
267
+ task "server:stop" => "ci:stop_server"
261
268
  end
data/lib/lobot/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lobot
2
- VERSION = "0.10.1"
2
+ VERSION = "0.10.2"
3
3
  end
data/spec/install_spec.rb CHANGED
@@ -8,72 +8,106 @@ describe Lobot::InstallGenerator do
8
8
 
9
9
  before do
10
10
  prepare_destination
11
- run_generator
12
11
  end
13
12
 
14
13
  after :all do
15
14
  FileUtils.rm_rf ::File.expand_path("../tmp", __FILE__)
16
15
  end
17
16
 
18
- it "creates .gitignore" do
19
- assert_file ".gitignore", /config\/ci.yml/
20
- end
17
+ context "without requiring input" do
18
+ before { run_generator }
21
19
 
22
- it "creates ci.yml" do
23
- assert_file "config/ci.yml", /app_name/
24
- end
25
20
 
26
- it "create bootstrap_server.sh" do
27
- assert_file "script/bootstrap_server.sh", /bin\/bash/
28
- end
21
+ it "creates .gitignore" do
22
+ assert_file ".gitignore", /config\/ci.yml/
23
+ end
29
24
 
30
- it "creates a ci_build.sh file" do
31
- assert_file "script/ci_build.sh"
32
- end
25
+ it "creates ci.yml" do
26
+ assert_file "config/ci.yml", /app_name/
27
+ end
33
28
 
34
- it "makes ci_build.sh executable" do
35
- system("test -x #{destination_root}/script/ci_build.sh").should == true
36
- end
29
+ it "create bootstrap_server.sh" do
30
+ assert_file "script/bootstrap_server.sh", /bin\/bash/
31
+ end
37
32
 
38
- context "Capfile exists" do
39
- it "appends a load path to the Capfile" do
40
- prepare_destination
41
- system("echo 'line 2' > #{destination_root}/Capfile")
42
- run_generator
43
- assert_file "Capfile", "load 'config/capistrano/ci'\nline 2\n"
33
+ it "creates a ci_build.sh file" do
34
+ assert_file "script/ci_build.sh"
44
35
  end
45
- end
46
36
 
47
- context "Capfile doesn't exist" do
48
- it "create a Capfile" do
49
- assert_file "Capfile", /load 'config\/capistrano\/ci'/
37
+ it "makes ci_build.sh executable" do
38
+ system("test -x #{destination_root}/script/ci_build.sh").should == true
50
39
  end
51
40
 
52
- it "give you the capify (default) capfile, but commented out" do
53
- assert_file "Capfile", /# load 'deploy'/
41
+ context "Capfile exists" do
42
+ it "appends a load path to the Capfile" do
43
+ prepare_destination
44
+ system("echo 'line 2' > #{destination_root}/Capfile")
45
+ run_generator
46
+ assert_file "Capfile", "load 'config/capistrano/ci'\nline 2\n"
47
+ end
54
48
  end
55
- end
56
49
 
57
- it "creates config/deploy/ci.rb" do
58
- assert_file "config/deploy/ci.rb", /role :ci, "#\{ci_server\}:#\{ssh_port\}"/
59
- end
50
+ context "Capfile doesn't exist" do
51
+ it "create a Capfile" do
52
+ assert_file "Capfile", /load 'config\/capistrano\/ci'/
53
+ end
60
54
 
61
- it "creates config/capistrano/ci.rb" do
62
- assert_file "config/capistrano/ci.rb", /task :ci_setup do/
63
- end
55
+ it "give you the capify (default) capfile, but commented out" do
56
+ assert_file "Capfile", /# load 'deploy'/
57
+ end
58
+ end
59
+
60
+ it "creates config/deploy/ci.rb" do
61
+ assert_file "config/deploy/ci.rb", /role :ci, "#\{ci_server\}:#\{ssh_port\}"/
62
+ end
63
+
64
+ it "creates config/capistrano/ci.rb" do
65
+ assert_file "config/capistrano/ci.rb", /task :ci_setup do/
66
+ end
67
+
68
+ it "creates soloistrc" do
69
+ assert_file "soloistrc", /cookbook_paths/
70
+ end
64
71
 
65
- it "creates soloistrc" do
66
- assert_file "soloistrc", /cookbook_paths/
72
+ it "creates the chef directory" do
73
+ destination_root.should have_structure do
74
+ directory "chef" do
75
+ directory "cookbooks" do
76
+ directory "pivotal_ci"
77
+ directory "pivotal_server"
78
+ end
79
+ end
80
+ end
81
+ end
67
82
  end
68
83
 
69
- it "creates the chef directory" do
70
- destination_root.should have_structure do
71
- directory "chef" do
72
- directory "cookbooks" do
73
- directory "pivotal_ci"
74
- directory "pivotal_server"
84
+ context "when asking for which app" do
85
+ context "with valid input" do
86
+ before do
87
+ run_generator [input]
88
+ end
89
+
90
+ context "when selecting Jenkins" do
91
+ let(:input) { "Jenkins" }
92
+ it "adds jenkins recipe to default recipe" do
93
+ assert_file "chef/cookbooks/pivotal_ci/recipes/default.rb", /include_recipe "pivotal_ci::jenkins"/
94
+ end
95
+ end
96
+
97
+ context "when selecting TeamCity" do
98
+ let(:input) { "TeamCity" }
99
+ it "adds teamcity recipe to default recipe" do
100
+ assert_file "chef/cookbooks/pivotal_ci/recipes/default.rb", /include_recipe "pivotal_ci::teamcity"/
101
+ end
102
+ end
103
+
104
+ context "when selecting the default" do
105
+ let(:input) { "" }
106
+ it "adds jenkins recipe to default recipe" do
107
+ assert_file "chef/cookbooks/pivotal_ci/recipes/default.rb", /include_recipe "pivotal_ci::jenkins"/
75
108
  end
76
109
  end
77
110
  end
111
+
78
112
  end
79
113
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lobot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-13 00:00:00.000000000 Z
12
+ date: 2012-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
@@ -235,8 +235,10 @@ files:
235
235
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/git_config.rb
236
236
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/id_rsa.rb
237
237
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/jenkins.rb
238
+ - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/teamcity.rb
238
239
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/recipes/xvfb.rb
239
240
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/templates/default/jenkins-job-config.xml.erb
241
+ - lib/generators/lobot/templates/chef/cookbooks/pivotal_ci/templates/default/teamcity-initd.erb
240
242
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_server/files/default/cacert.pem
241
243
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_server/libraries/marker.rb
242
244
  - lib/generators/lobot/templates/chef/cookbooks/pivotal_server/recipes/ca_cert.rb