Guest User

Untitled

a guest
Jul 21st, 2018
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. #!/home/deploy/.rvm/rubies/ree-1.8.7-2010.02/bin/ruby
  2.  
  3. require 'rubygems'
  4. require 'dm-core'
  5.  
  6. DataMapper::Logger.new(File.join(File.dirname(__FILE__), 'logger.log'), :debug)
  7. DataMapper.setup(:default, 'mysql://root:cistestdb@localhost/cis_db')
  8.  
  9. class Project
  10. include DataMapper::Resource
  11.  
  12. property :id, Serial # An auto-increment integer key
  13. property :name, String
  14. property :repos, String
  15. end
  16.  
  17. DataMapper.finalize
  18.  
  19.  
  20. #!/home/deploy/.rvm/rubies/ree-1.8.7-2010.02/bin/ruby
  21.  
  22. require File.join(File.dirname(__FILE__), 'cis-core')
  23.  
  24. name = ARGV[0]
  25. repos = ARGV[1] || "git@github.com:stars/#{name}.git"
  26. if repos.match("github.com:repos27stars")
  27. repos = repos.sub('github.com:repos27stars', 'github-repos:repos27stars')
  28. end
  29.  
  30. if name.blank?
  31. puts "Usage cis-add <name> <repos>"
  32. elsif Project.first(:name => name)
  33. puts "Project with that name already exists"
  34. else
  35. system "cd ~/apps && git clone #{repos}"
  36. db_file =<<EOS
  37. test:
  38. adapter: mysql
  39. database: #{name}_test
  40. username: root
  41. password: cistestdb
  42. encoding: utf8
  43. EOS
  44. File.open(File.expand_path("~/apps/#{name}/config/database.yml"), 'w') do |f|
  45. f.write(db_file)
  46. end
  47. system "cd ~/apps/#{name} && rvm --create use ree@#{name} && gem install bundler && bundle install"
  48. system "cd ~/apps/#{name} && rvm use ree@#{name} rake RAILS_ENV=test db:create"
  49. system "cd ~/apps/#{name} && rvm use ree@#{name} rake RAILS_ENV=test db:schema:load"
  50. Project.create(:name => name, :repos => repos)
  51. end
  52.  
  53.  
  54.  
  55. #!/home/deploy/.rvm/rubies/ree-1.8.7-2010.02/bin/ruby
  56.  
  57. require File.join(File.dirname(__FILE__), 'cis-core')
  58. require 'mail'
  59.  
  60. RECIPIENTS = ['shaun@27stars.co.uk', 'joe@27stars.co.uk', 'heather@27stars.co.uk']
  61. Mail.defaults do
  62. delivery_method :smtp, {:domain => '27stars.co.uk', :enable_starttls_auto => false}
  63. end
  64. # smtp '127.0.0.1'
  65. # from 'cis@27stars.co.uk'
  66. # to ['shaun@27stars.co.uk', 'joe@27stars.co.uk', 'heather@27stars.co.uk']
  67. # subject "[CI Server] Tests failed"
  68. #end
  69.  
  70. Project.all.each do |project|
  71. system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && git pull"
  72. system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && bundle install"
  73. system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && rake RAILS_ENV=test db:migrate"
  74. result = %x(cd ~/apps/#{project.name}; rvm use ree@#{project.name}; rake RAILS_ENV=test test)
  75. failed_tests = 0
  76. result.scan(/(\d+) tests, (\d+) assertions, (\d+) failures, (\d+) errors/) do |tests, assertions, failures, errors|
  77. puts "#{failures} failed, #{errors} caused errors"
  78. failed_tests += failures.to_i + errors.to_i
  79. end
  80. if failed_tests > 0
  81. log = %x(cd ~/apps/#{project.name}; rvm use ree@#{project.name}; git log | head)
  82. blame = log.slice(/Author: (.*)/, 1).strip
  83. time = log.slice(/Date: (.*)/, 1).strip
  84. mail = Mail.new do
  85. from "cis@27stars.co.uk"
  86. to RECIPIENTS
  87. subject "[CI Server] #{failed_tests} tests failed for #{project.name}"
  88. body "Tests were broken by #{blame} on #{time}"
  89. end
  90. mail.deliver!
  91. end
  92. end
Add Comment
Please, Sign In to add comment