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 文件中。