TL;DR
gradle利用ならsetup-gradleを用いるのがおすすめsetup-gradle利用時はsetup-javaのcache: gradleを消すwrapper-validationはsetup-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が簡単なことが主な理由でした。
補足: Dependency Submissionについて
GitHubでは、Dependency Submissionを行うことで、プロジェクトの利用する依存に関する脆弱性を管理することができます。
スキャン結果がリポジトリから見られるのは便利ですし、Dependabotによって自動でセキュリティパッチを受け取ることもできます。
これはアップロードを伴うため、どこかで↓のようにcontents: write権限を設定する必要があります。
permissions: contents: write
移行に当たっての注意点
cache: gradleは要削除
setup-javaのcache: gradleを使ってしまうと、setup-gradleによるキャッシュが妨げられる場合があるそうです。
公式からも注意喚起が有るため、移行に当たっては削除すべきです。
wrapper-validationはもう不要
setup-gradleに取り込まれて自動実行されるようになったため、wrapper-validationは不要になっています。
最終的な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を長年放置されてる方は是非移行してみて下さい。