Bundlerには標準で bundle outdated
という古くなっているgemを一覧表示するコマンドがありますが、実プロジェクトでは自動テストが未整備だったりテスト工数が取れなかったりして、gemを更新できないことも多いです。
とはいえ、rspecなどの開発ツールについてはアップデートしてもproductionに影響しない1ので、うちではこんな風にdevelopment と test のライブラリのみ古くなっていないかチェックしています。
# .gitlab-ci.yml
# gem が古くなっていないかチェックする
# development, test のみをエラーにする
bundle-outdated:
variables:
GREP_PATTERN: 'in groups ".*\(development\|test\).*"'
script:
- 'set +o pipefail'
- 'bundle outdated | grep "$GREP_PATTERN" | tee bundle-outdated-dev.txt'
- '[ ! -s bundle-outdated-dev.txt ]'
only:
- master # master ブランチでのみチェック。開発ブランチでチェックするのは冗長だし、どのみち修正は別のブランチで行うため。
-
厳密にはproductionへ影響することもあります。
bundle update
ではrspecが依存するライブラリも自動でアップデートされますが、同じライブラリを本番でも使っていることもあるからです。ただ、実際にそれで不具合が起きた経験はありません。 ↩