GitHub Actions の設定
レシピセクションは目的に焦点を当て、説明は最小限に留める。
GitHub Actions に関する一般的な概念については GitHub Actions documentation も参照。
目的
プロジェクトを GitHub Actions でビルド、テストしたい。
基本的な設定
GitHub Actions の設定は主に .github/workflows/ci.yml にて行われる。以下は、setup-java を用いた最小の CI ワークフローだ:
name: CI
on:
pull_request:
push:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 17
cache: sbt
- name: Setup sbt
uses: sbt/setup-sbt@v1
- name: Build and Test
run: sbt -v test
ディスク・キャッシュの拒否
setup-sbt は、sbt 2.x のディスクキャッシュを自動的に有効化する。これは以下のようにして拒否できる:
- uses: sbt/setup-sbt@v1
with:
disk-cache: false
ビルド・マトリックス
以下は、ビルド・マトリックスの使用例だ:
name: CI
on:
pull_request:
push:
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
java: 17
distribution: temurin
jobtype: 1
- os: ubuntu-latest
java: 17
distribution: temurin
jobtype: 2
- os: windows-latest
java: 17
distribution: temurin
jobtype: 2
- os: ubuntu-latest
java: 17
distribution: temurin
jobtype: 3
runs-on: ${{ matrix.os }}}
env:
JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -Dfile.encoding=UTF-8
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: ${{ matrix.distribution }}}
java-version: ${{ matrix.java }}}
cache: sbt
- name: Setup sbt
uses: sbt/setup-sbt@v1
- name: Build and test (1)
if: ${{ matrix.jobtype == 1 }}}
shell: bash
run: |
sbt -v "mimaReportBinaryIssues; scalafmtCheckAll; test;"
- name: Build and test (2)
if: ${{ matrix.jobtype == 2 }}}
shell: bash
run: |
sbt -v "scripted actions/*"
- name: Build and test (3)
if: ${{ matrix.jobtype == 3 }}}
shell: bash
run: |
sbt -v "scripted dependency-management/*"
sbt-github-actions
他にも Daniel Spiewak さんが作った sbt-github-actions という sbt プラグインがあり、これは build.sbt を用いてワークフローファイルを生成することができる。