以下の内容はhttps://wrongwrong163377.hatenablog.com/entry/2025/02/08/041209より取得しました。


【GitHub Actions】CIのワークフローをsetup-gradleに移行した際のメモ【Gradle】

TL;DR

  • gradle利用ならsetup-gradleを用いるのがおすすめ
  • setup-gradle利用時はsetup-javacache: gradleを消す
  • wrapper-validationsetup-gradleで自動実行されるため明示的な指定は不要

移行後のWF(抜粋)は以下のようになりました(実際にはcontents: write権限も必要ですが省略しています)。

      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up java
        uses: actions/setup-java@v4
        with:
          java-version: 17
          distribution: temurin
      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@v4
        with:
          dependency-graph: generate-and-submit
          dependency-graph-continue-on-failure: false
      - name: Lint
        run: ./gradlew lintKotlin

本文

setup-java@v3 -> @v4移行に伴い、諸々新しい記述への移行を試みました。
元のWF(抜粋)は以下のようになっていました。

      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up java
        uses: actions/setup-java@v3
        with:
          java-version: 17
          distribution: temurin
          cache: gradle
      - name: Validate Gradle wrapper
        uses: gradle/actions/wrapper-validation@v3
      - name: Lint
        run: ./gradlew lintKotlin

setup-gradleへの移行理由

キャッシュ周りが効率的な旨がアピールされていること、Dependency Submissionが簡単なことが主な理由でした。

github.com

補足: Dependency Submissionについて

GitHubでは、Dependency Submissionを行うことで、プロジェクトの利用する依存に関する脆弱性を管理することができます。
スキャン結果がリポジトリから見られるのは便利ですし、Dependabotによって自動でセキュリティパッチを受け取ることもできます。

docs.github.com

これはアップロードを伴うため、どこかで↓のようにcontents: write権限を設定する必要があります。

permissions:
  contents: write

github.com

移行に当たっての注意点

cache: gradleは要削除

setup-javacache: gradleを使ってしまうと、setup-gradleによるキャッシュが妨げられる場合があるそうです。
公式からも注意喚起が有るため、移行に当たっては削除すべきです。

github.com

wrapper-validationはもう不要

setup-gradleに取り込まれて自動実行されるようになったため、wrapper-validationは不要になっています。

github.com

最終的なdiff

以上をまとめて以下のようになりました。

      - name: Checkout
        uses: actions/checkout@v4
      - name: Set up java
-       uses: actions/setup-java@v3
+       uses: actions/setup-java@v4
        with:
          java-version: 17
          distribution: temurin
-         cache: gradle
-     - name: Validate Gradle wrapper
-       uses: gradle/actions/wrapper-validation@v3
+     - name: Setup Gradle
+       uses: gradle/actions/setup-gradle@v4
+       with:
+         dependency-graph: generate-and-submit
+         dependency-graph-continue-on-failure: false
      - name: Lint
        run: ./gradlew lintKotlin

雑感

ここ数年の動きは見てきましたが、GitHub Actionsでのgradle利用関係はかなり洗練されて使いやすくなったなと感じます。
wrapper-validationが不要になったり、Dependency Submission周りが公式に取り込まれたのは本当に嬉しいですね。
後、gradle-build-action@v2時代は↓のような書き方がちょっと不満だったんですが、今はgradlewを使ったいつもの書き方っぽくなっているのも嬉しいです。

    - name: Setup and execute Gradle 'test' task
      uses: gradle/gradle-build-action@v2
      with:
        arguments: test

WFを長年放置されてる方は是非移行してみて下さい。




以上の内容はhttps://wrongwrong163377.hatenablog.com/entry/2025/02/08/041209より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14