こんにちは、yaml苦手っ子です。GitHub Actions+GradleでCIする方法をまとめます。
key | value |
---|---|
Last Update | 2020/07/06 |
Gradle
こちらを参考にすればOK.
超シンプルに書くとこんな感じ。
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
以下のような感じになる
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