curlで実行中のアプリケーションのリビジョンを取得しているCapistrano 3(lib/capistrano/tasks/revision)にカスタムタスクを書いています。カスタムタスクを構成するにはどうすればいいですか。
次に、実行中のバージョンと展開された最新のバージョンを比較し、それらが同じでない場合はエラーをスローする必要があります。
実行中のアプリケーションのリビジョンが取得され、空の文字列と比較されるため、エラーがスローされます。
私が抱えている問題は、このタスクの出力がきれいではないことです。それは単なる白いテキストです。
私には何が欠けていますか?私は一日中ドキュメントを掘り下げてきました。
よろしくお願いいたします。
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
出力:あなたはよ、これらの線に沿ってhttps://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L91
:同様の問題の良い例は、コアで解決されて
[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