みなさんは日々 composer update していますか?
使用しているフレームワークの周辺パッケージの更新に追従し続けるのは大変そうにみえますが、きちんとテストを書いていれば日々の composer update もそれほど苦ではないと思います。
反対に composer update をしていないと依存しているパッケージのセキュリティのバグに脅かされたり、いざパッケージのバージョンをあげることになっても差分が大きすぎて、composer update したらテストがほとんどコケる…ということになりがちです。
そのため個人的には週に1回くらいは composer update をし、パッケージを最新にすることによって、常に更新に追従し続ける必要があると考えています。
Ruby には circleci-bundle-update-pr という gem があり、CircleCI で継続的 bundle update することができるのですが、PHP には同じようなことができるパッケージが無かったので、circleci-bundle-update-pr を参考に circleci-composer-update-pr というパッケージを自作してみました。
使い方
まずは CircleCI を使用していることが前提なので、まだ使ってない方は是非使ってみてください!(確か無料プランでもプライベートレポジトリ1つはプロジェクトを追加できたはずです)
CircleCI との連携が終わったら、 circle.yml
または .circleci/config.yml
に次のように記述して Cron を設定します。
version: 2 jobs: build: # ... continuous_composer_update: docker: - image: composer:latest working_directory: /work steps: - run: name: Set timezone to Asia/Tokyo command: echo "date.timezone=Asia/Tokyo" > "$PHP_INI_DIR/conf.d/date_timezone.ini" - checkout - restore_cache: name: Restore composer cache keys: - composer-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "composer.lock" }} - composer-{{ .Environment.COMMON_CACHE_KEY }}- - run: name: Setup requirements for continuous composer update command: composer global require enomotodev/circleci-composer-update-pr - deploy: name: Continuous composer update command: $COMPOSER_HOME/vendor/bin/circleci-composer-update-pr <username> <email> master workflows: version: 2 build: jobs: - build: # ... nightly: triggers: - schedule: cron: "00 10 * * 5" # 毎週金曜日の19時に実行される filters: branches: only: master jobs: - continuous_composer_update
これで毎週金曜日の19時に composer update が実行されて GitHub に PR が作られます。
このように自動で PR を作ってくれるので、あとはテスト結果を見て問題なさそうだったら Merge ボタンをポチるだけとなります。
差分へのリンクもあるので、気になるパッケージの更新は差分も確認することができます。
まとめ
最近は Docker や Kubernetes などのコンテナ技術が流行っていて、ミドルウェアのバージョンも簡単に上げることができるようになってきています。
サーバサイドエンジニアとしては使用しているフレームワークの周辺パッケージのバージョンを追従しながら、アップデートの差分を見ることによって、周辺パッケージの知識も少しずつ増やしていければ良いのかなと思っています。
CAREER SKILLS ソフトウェア開発者の完全キャリアガイド
- 作者: ジョン・ソンメズ,まつもとゆきひろ,長尾高弘
- 出版社/メーカー: 日経BP社
- 発売日: 2018/06/22
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 山田明憲
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る