Pull to refresh

Интеграция с TeamCity

Ruby
В процессе разработки проекта на Ruby 1.9 нам потребовалось использовать систему непрерывной интеграции.

CruiseControl.rb в своё время не подошёл из-за несовместимости с Ruby 1.9, в результате мы остановились на бесплатной TeamCity Professional под Linux.

Начальная настройка тривиальна, потребует лишь распаковки дистрибутивов TeamCity и JRE, а также настройки переменной JRE_HOME.

Прямо из коробки мы можем получить запуск тестов Test::Unit, RSpec, с оценкой покрытия rcov.

Но нам потребовалось большее, например, использовать кастомные тесты.

Рассмотрим тривиальный пример — тесты на компилируемость (например, исходного кода, файлов в формате YAML etc.).

image



Естественным способом для запуска наших тестов будет использование Rake. Вот пример задачи для типичного Rails-приложения:

  1. module TeamCity
  2. class Messaging
  3. class << self
  4. def teamcity?
  5. defined?(Rake::TeamCityApplication)
  6. end
  7. def method_missing(symbol, *args)
  8. Rake::TeamCityApplication.send_msg(
  9. Rake::TeamCityApplication.tc_message_factory.send(symbol, *args)
  10. ) if teamcity?
  11. end
  12. end
  13. end
  14. end
  15. desc 'Compiles all sources'
  16. task :compile do
  17. include TeamCity
  18. sources = FileList.new('**/*.rb').exclude(/restful\-authentication\/generators\//).to_a
  19. Messaging.create_tests_count(sources.size)
  20. sources.each do |filename|
  21. Messaging.create_test_started("Compiling #{filename}")
  22. result = system("ruby -c #{filename}")
  23. unless result
  24. Messaging.create_test_failed("Compiling #{filename}", "Error compiling #{filename}", '')
  25. else
  26. Messaging.create_test_finished("Compiling #{filename}", 0)
  27. end
  28. end
  29. end


Теперь создаём проект TeamCity с целью rake compile и вуаля, всё работает;)
______________________
Текст подготовлен в Хабра Редакторе от © SoftCoder.ru
Tags:Rubycruise controlteamcity
Hubs: Ruby
Total votes 24: ↑22 and ↓2 +20
Views4.1K

Comments 22

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now

Ruby Backend-разработчик
from 150,000 ₽KUPIBILET.RUСанкт-Петербург
QA Automation Engineer (Ruby)
from 130,000 to 160,000 ₽CV RecruitmentRemote job
Программист Ruby
from 120,000 to 300,000 ₽ReineМосква
Ruby Developer
to 250,000 ₽Общество «Знание»Remote job
Ruby Developer - Middle (remote)
from 1,600 to 3,000 $datarocketsRemote job

Top of the last 24 hours