blob: eb1f784bd7e8cd567af49f6e5ff8c617509ecb75 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#!/usr/bin/env ruby
require 'fileutils'
include FileUtils
def root_dir
@root_dir ||= File.expand_path('../..', __FILE__)
end
def rake(*tasks)
tasks.each do |task|
cmd = "bundle exec rake #{task}"
puts "Running command: #{cmd}"
return false unless system(cmd)
end
true
end
puts "[CruiseControl] Rails build"
build_results = {}
# Install rubygems-update, so 'gem update --system' in cruise_config.rb auto-installs it on next build.
# This is how you can auto-update rubygems without logging in to CI system
build_results[:geminstaller] = system "sudo gem install rubygems-update -v 1.3.5 --no-ri --no-rdoc"
# Install required version of bundler.
build_results[:geminstaller] = system "sudo gem install bundler -v 0.9.0.pre4 --prerelease --no-ri --no-rdoc"
cd root_dir do
puts
puts "[CruiseControl] Bundling RubyGems"
puts
build_results[:bundle] = system 'env CI=1 sudo bundle install'
end
cd "#{root_dir}/activesupport" do
puts
puts "[CruiseControl] Building ActiveSupport"
puts
build_results[:activesupport] = rake 'test'
build_results[:activesupport_isolated] = rake 'test:isolated'
end
cd "#{root_dir}/railties" do
puts
puts "[CruiseControl] Building RailTies"
puts
build_results[:railties] = rake 'test'
end
cd "#{root_dir}/actionpack" do
puts
puts "[CruiseControl] Building ActionPack"
puts
build_results[:actionpack] = rake 'test'
build_results[:actionpack_isolated] = rake 'test:isolated'
end
cd "#{root_dir}/actionmailer" do
puts
puts "[CruiseControl] Building ActionMailer"
puts
build_results[:actionmailer] = rake 'test'
end
cd "#{root_dir}/activemodel" do
puts
puts "[CruiseControl] Building ActiveModel"
puts
build_results[:activemodel] = rake 'test'
end
rm_f "#{root_dir}/activeresource/debug.log"
cd "#{root_dir}/activeresource" do
puts
puts "[CruiseControl] Building ActiveResource"
puts
build_results[:activeresource] = rake 'test'
end
rm_f "#{root_dir}/activerecord/debug.log"
cd "#{root_dir}/activerecord" do
puts
puts "[CruiseControl] Building ActiveRecord with MySQL"
puts
build_results[:activerecord_mysql] = rake 'mysql:rebuild_databases', 'test_mysql'
end
cd "#{root_dir}/activerecord" do
puts
puts "[CruiseControl] Building ActiveRecord with PostgreSQL"
puts
build_results[:activerecord_postgresql8] = rake 'postgresql:rebuild_databases', 'test_postgresql'
end
cd "#{root_dir}/activerecord" do
puts
puts "[CruiseControl] Building ActiveRecord with SQLite 3"
puts
build_results[:activerecord_sqlite3] = rake 'test_sqlite3'
end
puts
puts "[CruiseControl] Build environment:"
puts "[CruiseControl] #{`cat /etc/issue`}"
puts "[CruiseControl] #{`uname -a`}"
puts "[CruiseControl] #{`ruby -v`}"
puts "[CruiseControl] #{`mysql --version`}"
puts "[CruiseControl] #{`pg_config --version`}"
puts "[CruiseControl] SQLite3: #{`sqlite3 -version`}"
`gem env`.each_line {|line| print "[CruiseControl] #{line}"}
# Commented until bundler supports --list again
# puts "[CruiseControl] Bundled gems:"
# `gem bundle --list`.each_line {|line| print "[CruiseControl] #{line}"}
puts "[CruiseControl] Local gems:"
`gem list`.each_line {|line| print "[CruiseControl] #{line}"}
failures = build_results.select { |key, value| value == false }
if failures.empty?
puts
puts "[CruiseControl] Rails build finished sucessfully"
exit(0)
else
puts
puts "[CruiseControl] Rails build FAILED"
puts "[CruiseControl] Failed components: #{failures.map { |component| component.first }.join(', ')}"
exit(-1)
end
|