ci.rake
66 lines
| 2.3 KiB
| text/x-ruby
|
RubyLexer
|
r3805 | desc "Run the Continous Integration tests for Redmine" | ||
task :ci do | ||||
# RAILS_ENV and ENV[] can diverge so force them both to test | ||||
ENV['RAILS_ENV'] = 'test' | ||||
RAILS_ENV = 'test' | ||||
Rake::Task["ci:setup"].invoke | ||||
Rake::Task["ci:build"].invoke | ||||
Rake::Task["ci:teardown"].invoke | ||||
end | ||||
namespace :ci do | ||||
|
r11053 | desc "Setup Redmine for a new build" | ||
|
r3805 | task :setup do | ||
|
r11159 | Rake::Task["tmp:clear"].invoke | ||
|
r11053 | Rake::Task["log:clear"].invoke | ||
|
r12026 | database = ENV['DATABASE_ADAPTER'] | ||
unless Object.const_defined?(:JRUBY_VERSION) && database =~ /sqlite3/ | ||||
Rake::Task["db:create:all"].invoke | ||||
end | ||||
|
r3805 | Rake::Task["db:migrate"].invoke | ||
Rake::Task["db:schema:dump"].invoke | ||||
|
r11053 | Rake::Task["test:scm:setup:all"].invoke | ||
|
r4523 | Rake::Task["test:scm:update"].invoke | ||
|
r3805 | end | ||
desc "Build Redmine" | ||||
task :build do | ||||
Rake::Task["test"].invoke | ||||
|
r11749 | # Rake::Task["test:ui"].invoke if RUBY_VERSION >= '1.9.3' | ||
|
r3805 | end | ||
desc "Finish the build" | ||||
task :teardown do | ||||
end | ||||
|
r11053 | end | ||
|
r3805 | |||
|
r11053 | desc "Creates database.yml for the CI server" | ||
file 'config/database.yml' do | ||||
require 'yaml' | ||||
database = ENV['DATABASE_ADAPTER'] | ||||
ruby = ENV['RUBY_VER'].gsub('.', '').gsub('-', '') | ||||
branch = ENV['BRANCH'].gsub('.', '').gsub('-', '') | ||||
dev_db_name = "ci_#{branch}_#{ruby}_dev" | ||||
test_db_name = "ci_#{branch}_#{ruby}_test" | ||||
case database | ||||
when 'mysql' | ||||
dev_conf = {'adapter' => (RUBY_VERSION >= '1.9' ? 'mysql2' : 'mysql'), 'database' => dev_db_name, 'host' => 'localhost', 'username' => 'jenkins', 'password' => 'jenkins', 'encoding' => 'utf8'} | ||||
test_conf = dev_conf.merge('database' => test_db_name) | ||||
when 'postgresql' | ||||
dev_conf = {'adapter' => 'postgresql', 'database' => dev_db_name, 'host' => 'localhost', 'username' => 'jenkins', 'password' => 'jenkins'} | ||||
test_conf = dev_conf.merge('database' => test_db_name) | ||||
when 'sqlite3' | ||||
dev_conf = {'adapter' => 'sqlite3', 'database' => "db/#{dev_db_name}.sqlite3"} | ||||
test_conf = dev_conf.merge('database' => "db/#{test_db_name}.sqlite3") | ||||
when 'sqlserver' | ||||
dev_conf = {'adapter' => 'sqlserver', 'database' => dev_db_name, 'host' => 'mssqlserver', 'port' => 1433, 'username' => 'jenkins', 'password' => 'jenkins'} | ||||
test_conf = dev_conf.merge('database' => test_db_name) | ||||
else | ||||
abort "Unknown database" | ||||
|
r9201 | end | ||
|
r11053 | File.open('config/database.yml', 'w') do |f| | ||
f.write YAML.dump({'development' => dev_conf, 'test' => test_conf}) | ||||
|
r3805 | end | ||
end | ||||