イフブロ

イフブロ

インフラエンジニアのブログ

CapistranoでServerspec :raise_on_non_zero_exit

Capistranoリモートホストに同時実行する。
Serverspecを各ホストでlocal実行する。

複数台でエラーが出る。

そんな時に、エラーログが1つのサーバー分しか出ない時。 または、エラーを無視して、他のサーバーの処理もやりきって欲しい時のオプション。

:raise_on_non_zero_exit

これをこんな風につけておくと、1台でエラーが起きてもとりあえず他のサーバーの処理も継続してやってくれる。
で、failのログだけ出してくれる。

execute "bundle exec rake spec", raise_on_non_zero_exit: false

例えば、executeでやるとこんな感じで結果が出る。

… (省略) …
NFO [7ef5a9c5] Finished in 0.233 seconds with exit status 1 (failed).
INFO [b65518f1] Finished in 0.274 seconds with exit status 127 (failed).
INFO [dev1-revprx03]
INFO [385b5e33] Running /usr/bin/env bundle exec rake spec as root@dev1-server02  ← 実行開始のログ
INFO [dev1-haprx03]
INFO [d1ca94b8] Running /usr/bin/env bundle exec rake spec as root@dev1-server01
INFO [80a9b50b] Finished in 0.321 seconds with exit status 1 (failed). ← 各結果。左側のIDで引けば、どの開始のログとマッピングできるかわかる。
INFO [752c7beb] Finished in 0.645 seconds with exit status 7 (failed).
INFO [fb12840b] Finished in 0.626 seconds with exit status 1 (failed).
INFO [9030acf5] Finished in 0.670 seconds with exit status 1 (failed).
INFO [d21c1b2f] Finished in 0.620 seconds with exit status 1 (failed).
INFO [9e397341] Finished in 1.304 seconds with exit status 1 (failed).
INFO [ca2c4a43] Finished in 0.608 seconds with exit status 127 (failed).
INFO [385b5e33] Finished in 0.588 seconds with exit status 127 (failed).
INFO [d1ca94b8] Finished in 0.585 seconds with exit status 127 (failed).