0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Scala Steward を ubuntu-latest な GitHub Actions で使っていたら何もしていないのにコケるようになった

Last updated at Posted at 2024-09-30

以前の記事Scala Steward を GitHub Actions で使う方法をご紹介しました。Scala でも Dependabot のように依存ライブラリをアップデートする PR を自動で作成してくれて便利です。

そのため、 自身のプロジェクトでも当然 scala-steward-action を使用していたのですが、2024 年 9 月 28 日の実行で突然コケるようになりました。

failedToLaunchScalaSteward.png

ログを確認してみると、sbt がインストールされていないと怒っています。

  2024-09-28 00:33:55,676 INFO   
    ____            _         ____  _                             _
   / ___|  ___ __ _| | __ _  / ___|| |_ _____      ____ _ _ __ __| |
   \___ \ / __/ _` | |/ _` | \___ \| __/ _ \ \ /\ / / _` | '__/ _` |
    ___) | (_| (_| | | (_| |  ___) | ||  __/\ V  V / (_| | | | (_| |
   |____/ \___\__,_|_|\__,_| |____/ \__\___| \_/\_/ \__,_|_|  \__,_|
   v0.30.2
   
  2024-09-28 00:33:57,972 INFO  Loaded 279 artifact migration(s)
  2024-09-28 00:33:58,072 INFO  Loaded 35 Scalafix migration(s)
  2024-09-28 00:33:58,179 INFO  Loaded 1 repo config(s)
  2024-09-28 00:33:58,400 INFO  Run self checks
  2024-09-28 00:33:58,692 INFO  Using git version 2.46.1
  2024-09-28 00:33:59,212 INFO  Using scalafix 0.13.0
  2024-09-28 00:33:59,709 INFO  Using scalafmt 3.8.3
  2024-09-28 00:34:00,490 INFO  Removing any run-specific files
  2024-09-28 00:34:00,502 INFO  ──────────── Steward yokra9/akka-http-example ────────────
  2024-09-28 00:34:00,503 INFO  Check cache of yokra9/akka-http-example
  2024-09-28 00:34:00,933 INFO  Clone yokra9/akka-http-example
  2024-09-28 00:34:01,143 INFO  Refresh cache of yokra9/akka-http-example
  2024-09-28 00:34:01,233 INFO  Get dependencies in . from sbt
  2024-09-28 00:34:01,298 ERROR Steward yokra9/akka-http-example failed
  java.io.IOException: Cannot run program "sbt" (in directory "/home/runner/scala-steward/workspace/repos/yokra9/akka-http-example"): error=2, No such file or directory
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
    at org.scalasteward.core.io.process$.$anonfun$createProcess$2(process.scala:106)
    at flatMap @ org.scalasteward.core.io.process$.createProcess(process.scala:104)
    at flatMap @ org.scalasteward.core.io.process$.slurp(process.scala:62)
    at delay @ org.typelevel.log4cats.slf4j.internal.Slf4jLoggerInternal$Slf4jLogger.isDebugEnabled(Slf4jLoggerInternal.scala:73)
    at ifM$extension @ org.typelevel.log4cats.slf4j.internal.Slf4jLoggerInternal$Slf4jLogger.info(Slf4jLoggerInternal.scala:99)
    at >>$extension @ org.scalasteward.core.update.artifact.ArtifactMigrationsLoader.loadMigrations(ArtifactMigrationsLoader.scala:45)
    at main$ @ org.scalasteward.core.Main$.main(Main.scala:23)
    at main$ @ org.scalasteward.core.Main$.main(Main.scala:23)
  Caused by: java.io.IOException: error=2, No such file or directory
    at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
    at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
    at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
    at org.scalasteward.core.io.process$.$anonfun$createProcess$2(process.scala:106)
    at cats.effect.IOFiber.runLoop(IOFiber.scala:1004)
    at cats.effect.IOFiber.asyncContinueSuccessfulR(IOFiber.scala:1368)
    at cats.effect.IOFiber.run(IOFiber.scala:113)
    at cats.effect.unsafe.WorkerThread.run(WorkerThread.scala:743)
  2024-09-28 00:34:01,301 INFO  ──────────── Total time: Steward yokra9/akka-http-example: 798ms ────────────
  2024-09-28 00:34:01,308 INFO  ──────────── Total time: run: 2s 908ms ────────────

ubuntu-latest から sbt が消えていた

2024 年 9 月 25 日から 2024 年 10 月 30 日にかけて、ubuntu-latest ランナーの指すバージョンが 22.04 から 24.04 に変更されます。アナウンスの Issue では言及されていませんが、この変更によって sbt がプリインストールされなくなったようです。該当のプロジェクトでは ubuntu-latest を指定していたため、28 日時点で変更が適用されたことになります。

.github/workflows/DependencyUpdate.yml
jobs:
  scala-steward:
    runs-on: ubuntu-latest
    name: Launch Scala Steward

これは当時のドキュメントを参考とした設定でしたが、28 日時点のドキュメントでは ubuntu-22.04 決め打ちとなっています。元来は ubuntu-20.04 環境で発生するエラーのワークアラウンドだったようですが、幸運にも今回の事象を回避する結果になっています。1

せっかく ubuntu-latest を使用しているなら、できればこのまま最新版を追いかけたいところです。解決法はシンプルで、公式ガイドを参考に sbt のインストール手順を追加するだけです sbt/setup-sbt を使用した方がもっとシンプルにできると教えていただいたので修正しました:

.github/workflows/DependencyUpdate.yml
name: Launch Scala Steward

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

jobs:
  scala-steward:
    runs-on: ubuntu-latest
    name: Launch Scala Steward
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v1
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Install sbt
        uses: sbt/setup-sbt@v1

      - name: Launch Scala Steward
        uses: scala-steward-org/scala-steward-action@v2
        with:
          github-token: ${{ steps.generate-token.outputs.token }}
          author-email: 41898282+github-actions[bot]@users.noreply.github.com
          author-name: github-actions[bot]

ここでは sbt の追加に加えコミッターが github-actions[bot] になる名前とメールアドレスを指定するアレンジも施しています。

なお、#644 Fix README.md to run on ubuntu-latest and install sbt by yokra9 にてドキュメントの修正がマージされました。現在はドキュメントに従って導入すればコケなくなっているはずです。

参考リンク

  1. 不幸にも発見が遅れた、という見方もできます。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?