Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/home/deploy/.rvm/rubies/ree-1.8.7-2010.02/bin/ruby
- require 'rubygems'
- require 'dm-core'
- DataMapper::Logger.new(File.join(File.dirname(__FILE__), 'logger.log'), :debug)
- DataMapper.setup(:default, 'mysql://root:cistestdb@localhost/cis_db')
- class Project
- include DataMapper::Resource
- property :id, Serial # An auto-increment integer key
- property :name, String
- property :repos, String
- end
- DataMapper.finalize
- #!/home/deploy/.rvm/rubies/ree-1.8.7-2010.02/bin/ruby
- require File.join(File.dirname(__FILE__), 'cis-core')
- name = ARGV[0]
- repos = ARGV[1] || "git@github.com:stars/#{name}.git"
- if repos.match("github.com:repos27stars")
- repos = repos.sub('github.com:repos27stars', 'github-repos:repos27stars')
- end
- if name.blank?
- puts "Usage cis-add <name> <repos>"
- elsif Project.first(:name => name)
- puts "Project with that name already exists"
- else
- system "cd ~/apps && git clone #{repos}"
- db_file =<<EOS
- test:
- adapter: mysql
- database: #{name}_test
- username: root
- password: cistestdb
- encoding: utf8
- EOS
- File.open(File.expand_path("~/apps/#{name}/config/database.yml"), 'w') do |f|
- f.write(db_file)
- end
- system "cd ~/apps/#{name} && rvm --create use ree@#{name} && gem install bundler && bundle install"
- system "cd ~/apps/#{name} && rvm use ree@#{name} rake RAILS_ENV=test db:create"
- system "cd ~/apps/#{name} && rvm use ree@#{name} rake RAILS_ENV=test db:schema:load"
- Project.create(:name => name, :repos => repos)
- end
- #!/home/deploy/.rvm/rubies/ree-1.8.7-2010.02/bin/ruby
- require File.join(File.dirname(__FILE__), 'cis-core')
- require 'mail'
- RECIPIENTS = ['shaun@27stars.co.uk', 'joe@27stars.co.uk', 'heather@27stars.co.uk']
- Mail.defaults do
- delivery_method :smtp, {:domain => '27stars.co.uk', :enable_starttls_auto => false}
- end
- # smtp '127.0.0.1'
- # from 'cis@27stars.co.uk'
- # to ['shaun@27stars.co.uk', 'joe@27stars.co.uk', 'heather@27stars.co.uk']
- # subject "[CI Server] Tests failed"
- #end
- Project.all.each do |project|
- system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && git pull"
- system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && bundle install"
- system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && rake RAILS_ENV=test db:migrate"
- result = %x(cd ~/apps/#{project.name}; rvm use ree@#{project.name}; rake RAILS_ENV=test test)
- failed_tests = 0
- result.scan(/(\d+) tests, (\d+) assertions, (\d+) failures, (\d+) errors/) do |tests, assertions, failures, errors|
- puts "#{failures} failed, #{errors} caused errors"
- failed_tests += failures.to_i + errors.to_i
- end
- if failed_tests > 0
- log = %x(cd ~/apps/#{project.name}; rvm use ree@#{project.name}; git log | head)
- blame = log.slice(/Author: (.*)/, 1).strip
- time = log.slice(/Date: (.*)/, 1).strip
- mail = Mail.new do
- from "cis@27stars.co.uk"
- to RECIPIENTS
- subject "[CI Server] #{failed_tests} tests failed for #{project.name}"
- body "Tests were broken by #{blame} on #{time}"
- end
- mail.deliver!
- end
- end
Add Comment
Please, Sign In to add comment