こんにちは、yaml苦手っ子です。GitHub Actions+GradleでCIする方法をまとめます。
key |
value |
Last Update |
2020/07/06 |
Gradle
こちらを参考にすればOK.
docs.github.com
超シンプルに書くとこんな感じ。
name: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Gradle
run: ./gradlew test
Cacheを利用する
ここをみると以下のように説明されている。
依存関係をキャッシュしてワークフローのスピードを上げる - GitHub Docs
GitHubホストランナー上のジョブは、クリーンな仮想環境で開始され、依存関係を毎回ダウンロードしなければならず、ネットワークの利用率を増大させ、実行時間が長くなり、コストが高まってしまいます。
なるほど、というわけでキャッシュの使い方をまとめてみる。
actions/cacheを使う
actions cacheを使う方法。
github.com
A repository can have up to 5GB of caches. Once the 5GB limit is reached, older caches will be evicted based on when the cache was last accessed. Caches that are not accessed within the last week will also be evicted.
どうやら5GiBの制限があるみたい
READMEにちゃんと設定が書いてある。例としては以下のような感じ
name: Run Gradle unit-test on Push
on: [pull_request, push]
jobs:
gradle:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 8
- name: Cache Gradle packages
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Build with Gradle
run: ./gradlew test
gradle pluginでcacheを使う
ちなみに eskatos/gradle-command-action@v1 でもcacheを使うことが可能だったりします。
github.com
このActtionではcacheを以下の3つに分けてあるとのこと。(default でwrapper-cacheのみ有効.多分キャッシュの制限が原因)
wrapper-cache-enabled: true
dependencies-cache-enabled: true
configuration-cache-enabled: true
以下のような感じになる
github.com
name: "CI"
on: [pull_request, push]
jobs:
ci:
name: "CI"
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Setup Java 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Build with Gradle
uses: eskatos/gradle-command-action@v1
with:
dependencies-cache-enabled: true
configuration-cache-enabled: true
arguments: test
参考
GradleでのJavaのビルドとテスト - GitHub Docs
GitHub ActionsでGradleの自動ビルド/テストをする [再掲] | Qrunch(クランチ)