Я пишу настраиваемую задачу в Capistrano 3 (lib/capistrano/tasks/revision), которая извлекает исправление работающего приложения через curl.Как структурировать настраиваемую задачу и как я могу получить результат?
Затем он сравнивает текущую версию с последней развернутой и сравнивает их, если они не совпадают с ошибкой.
Я дошел до того, что ревизия запущенного приложения извлекается и сравнивается с пустой строкой, чтобы вывести ошибку.
Проблема, с которой я столкнулась, заключается в том, что результат этой задачи не очень хорош, это просто белый текст.
Что мне не хватает? Я весь день копаю в документации.
С уважением!
revision.rake:
namespace :revision do
desc 'Check revision of all applications to determine if the application is running the latest deployed revison'
task :check do
puts 'Checking revision of all supported applications'
invoke 'revision:httpapi'
end
task :httpapi do
on roles(:httpapi), in: :sequence do |host|
puts "Checking revision of httpapi on #{host}"
begin
response = capture "curl -L 'http://#{fetch(:diagnostics_username)}:#{fetch(:diagnostics_password)}@#{host}/diagnostics/status?mode=extended&output=detailed'"
object = JSON.parse(response, object_class: OpenStruct)
unless object.result.revision == "" #For test, just compare to empty string so error is thrown
raise 'The running revision is not the same as the installed, please restart all applications'
end
rescue Exception => e
raise e.message
end
end
end
end
Выход:
[email protected] ~/Development/tulo-deployment (master) $ cap test revision:check
Enter a branch or tag name to deploy (defaults to develop)
Please enter branch (develop):
Deploying branch/tag: develop
rvm 1.28.0 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]
rvm 1.28.0 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]
ruby-1.9.3-p545
ruby-1.9.3-p545
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
Checking revision of all supported applications
Checking revision of httpapi on 10.30.1.1
(Backtrace restricted to imported tasks)
cap aborted!
The running revision is not the same as the installed, please restart all applications
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:20:in `rescue in block (3 levels) in <top (required)>'
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:12:in `block (3 levels) in <top (required)>'
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:10:in `block (2 levels) in <top (required)>'
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:6:in `block (2 levels) in <top (required)>'
The running revision is not the same as the installed, please restart all applications
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:17:in `block (3 levels) in <top (required)>'
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:10:in `block (2 levels) in <top (required)>'
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:6:in `block (2 levels) in <top (required)>'
Tasks: TOP => revision:httpapi
(See full trace by running task with --trace)
Это поможет, если вы показали код, который вы пытаетесь. В противном случае вы, по сути, просите кого-то написать для вас документацию по выпуску Capistrano, которая частично существует здесь: https://github.com/capistrano/sshkit#output-handling –
Конечно, я не смог получить доступ к этой части, когда писал вопрос, но я добавил его. – gonace