LoginSignup
3
0

More than 1 year has passed since last update.

Scala でも Dependabot のように依存ライブラリをアップデートする PR を自動で作成してほしい(GitHub Actions)

Last updated at Posted at 2022-09-10

TL;DR

Scala Steward Github Action を使いましょう。

Scala では Dependabot が使えない

以前 Scala で作った Web アプリを Dockerize して動かす(令和最新版) という記事を書いたのですが、執筆から1年以上がすぎ紹介している各ライブラリのバージョンが古くなっていました。これでは令和最新版じゃありません。当該記事ではサンプルリポジトリを作っていましたので、そこで依存ライブラリのアップデート検証をすることにしました。

まずは検証が楽なように ScalaTest で自動テストを書き、GitHub Actions で走らせました。せっかくなので sbt-scoverage で生成したカバレッジレポートを upload-artifact で Actions の完了画面にアップロードさせてみるなどしました。

さぁ次は依存ライブラリのアップデートだ、dependabot.yml を書くぞ、というところでハタと気づきます。他の Scala プロジェクトで Dependabot が動いているところを見たことがありません。GitHub のドキュメントでも、サポート対象のパッケージマネージャとして記載されていません。

Scala Steward について

Scala Steward は依存ライブラリ、sbt プラグイン、および Scala と sbt のバージョンアップを行う PR を自動作成してくれる OSS です。おおよそ Dependabot と同じ事をしてくれますね。Akka や Play Framework 、Slick といった著名な Scala プロジェクトでも採用されていますから、それらの PR やコミットログで動きを確認できます。Scala Steward が紹介された Scala Blog の記事が2019年7月で、Dependabot が GitHub に買収されて無料で使えるようになったのが2019年の5月です。このあたりで依存アップデート自動化の波が来ていたことがわかります1

Scala Steward 自体はサービスではなくソフトウェアなので実行するためのホストが必要です。かつては開発者でもある @fthomas さんが無償利用できる環境を提供していましたが、現在は VirtusLab 社がその役割を引き継いでいます

Scala Steward を GitHub Actions で使う

Scala Steward Github Action はそんな Scala Steward を GitHub Actions で走らせるための Action です。VirtusLab 社の環境を使わせてもらってもいいのですが、GitHub Actions なら独自の環境をお手軽に用意できるメリットがあります。

セットアップ方法については、README.md にかなり詳細なチュートリアルが掲載されているので、そう迷うことはないはずです(私が試した際に迷ったポイントは PR を投げて修正させてもらいました2

セットアップに成功すると、このようにかなり詳細な PR を作成してくれます。ネコちゃん執事のアイコンが可愛いですね。

scala-steward-pr.jpg

参考リンク

  1. ちなみに dependabot-core の初期リリースは2017年4月で、そのベースとなった gocardless/bump の Initial Commit は2015年10月です。scala-steward の初期リリースが2019年2月なので、dependabot のほうが歴史あるプロジェクトとなります。一方、renovate の Initial Commit は2016年12月でした。なお renovate は v16.9.0 から sbt をサポートしていますから、renovate の GitHub Actions を使う手もあります。

  2. GitHub の仕様変更がない限り。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0