Автоматически запускать тесты при развертывании с Capistrano - PullRequest
7 голосов
/ 21 июля 2011

Есть ли способ запустить капистрано юнит-тесты в моем приложении Rails, когда я запускаю cap deploy, и потерпеть неудачу, если они не пройдут?Я знаю, что это может и должно быть выполнено установщиком, но я бы хотел, чтобы это было автоматически.Любые идеи будут с благодарностью.

Спасибо заранее!

РЕДАКТИРОВАТЬ: Я в конечном итоге использовать это в качестве решения.

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

Эта задача capistrano запускает модульные тесты на развертываемом сервере в рабочем режиме:

desc "Run the full tests on the deployed app." 
task :run_tests do
 run "cd #{release_path} && RAILS_ENV=production rake && cat /dev/null > log/test.log" 
end

Нашел решение здесь: http://marklunds.com/articles/one/338

: D

2 голосов
/ 23 марта 2016

Эта установка будет запускать ваши тесты локально перед развертыванием.

Задача Capistrano , например, Библиотека / Capistrano / задачи / deploy.rake

namespace :deploy do
  desc 'Run test suite before deployment'
  task :test_suite do
    run_locally do
      execute :rake, 'test'
    end
  end
end

Конфигурация Capistrano, config / deploy.rb

before 'deploy:starting', 'deploy:test_suite'

Работает в Capistrano v3.x

0 голосов
/ 08 июня 2016

конфиг / deploy.rb

# Path of tests to be run, use array with empty string to run all tests
set :tests, ['']

namespace :deploy do
  desc "Runs test before deploying, can't deploy unless they pass"
  task :run_tests do
    test_log = "log/capistrano.test.log"
    tests = fetch(:tests)
    tests.each do |test|
      puts "--> Running tests: '#{test}', please wait ..."
      unless system "bundle exec rspec #{test} > #{test_log} 2>&1"
        puts "--> Aborting deployment! One or more tests in '#{test}' failed. Results in: #{test_log}"
        exit;
      end
      puts "--> '#{test}' passed"
    end
    puts "--> All tests passed, continuing deployment"
    system "rm #{test_log}"
  end

  # Only allow a deploy with passing tests to be deployed
  before :deploy, "deploy:run_tests"

end

Запустите его с помощью

cap production deploy:run_tests
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...