Guest User

Untitled

a guest
Jul 21st, 2018
190
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] || "[email protected]: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. Mail.defaults do
  61. delivery_method :smtp, {:domain => '27stars.co.uk', :enable_starttls_auto => false}
  62. end
  63. # smtp '127.0.0.1'
  64. # subject "[CI Server] Tests failed"
  65. #end
  66.  
  67. Project.all.each do |project|
  68. system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && git pull"
  69. system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && bundle install"
  70. system "cd ~/apps/#{project.name} && rvm use ree@#{project.name} && rake RAILS_ENV=test db:migrate"
  71. result = %x(cd ~/apps/#{project.name}; rvm use ree@#{project.name}; rake RAILS_ENV=test test)
  72. failed_tests = 0
  73. result.scan(/(\d+) tests, (\d+) assertions, (\d+) failures, (\d+) errors/) do |tests, assertions, failures, errors|
  74. puts "#{failures} failed, #{errors} caused errors"
  75. failed_tests += failures.to_i + errors.to_i
  76. end
  77. if failed_tests > 0
  78. log = %x(cd ~/apps/#{project.name}; rvm use ree@#{project.name}; git log | head)
  79. blame = log.slice(/Author: (.*)/, 1).strip
  80. time = log.slice(/Date: (.*)/, 1).strip
  81. mail = Mail.new do
  82. to RECIPIENTS
  83. subject "[CI Server] #{failed_tests} tests failed for #{project.name}"
  84. body "Tests were broken by #{blame} on #{time}"
  85. end
  86. mail.deliver!
  87. end
  88. end
Add Comment
Please, Sign In to add comment