Gradle Cache Action 使用教程
1. 项目介绍
Gradle Cache Action
是一个用于在 GitHub Actions 中缓存 Gradle 缓存的 GitHub Action。它通过自定义的缓存机制,优化了 Gradle 构建过程,减少了构建时间,并节省了缓存空间。该项目的主要改进包括:
- Gradle 远程构建缓存后端:仅从 GitHub 缓存中拉取所需的条目。
- 支持多远程缓存:通过
gradle-multi-cache
支持多个远程缓存(例如 GitHub Actions + S3)。 - 简化配置:只需指定 Action 名称和 Gradle 命令即可满足大多数情况。
- 减少空间使用:GitHub 默认限制缓存空间为 5GiB,该 Action 通过优化缓存机制减少了空间使用。
- 构建扫描链接:在构建结果中添加构建扫描链接。
- 构建失败标记:在提交差异视图中添加构建失败标记(例如
compileJava
或compileKotlin
标记)。
2. 项目快速启动
2.1 添加到现有工作流
将以下代码添加到你的工作流文件(位于 .github/workflows
目录下):
- uses: burrunan/gradle-cache-action@v1
name: Build PROJECT_NAME
env:
VARIABLE: VALUE
with:
job-id: jdk8
arguments: build
gradle-version: wrapper
properties: |
kotlin.js.compiler=ir
kotlin.parallel.tasks.in.project=true
2.2 配置说明
job-id
:用于区分不同作业的缓存,例如不同 JDK 版本的作业不能共享缓存。arguments
:指定 Gradle 执行的参数,例如build
。gradle-version
:指定 Gradle 版本,默认为wrapper
。properties
:传递给 Gradle 的属性,例如kotlin.js.compiler=ir
。
3. 应用案例和最佳实践
3.1 启用本地构建缓存
在 settings.gradle.kts
中启用本地构建缓存:
val isCiServer = System.getenv().containsKey("CI")
buildCache {
local {
isEnabled = !isCiServer
}
}
3.2 添加远程缓存
通过 gradle-multi-cache
添加多个远程缓存,例如 GitHub Actions 和 S3:
- uses: burrunan/gradle-cache-action@v1
with:
remote-build-cache-proxy-enabled: true
remote-build-cache-url: s3://your-bucket/path
4. 典型生态项目
以下是一些已集成 Gradle Cache Action
的开源项目:
- Apache Calcite:apache/calcite#2114
- Apache JMeter:apache/jmeter#611
- pgjdbc:pgjdbc/pgjdbc#1862
- junit-pioneer:junit-pioneer/junit-pioneer#325
- opentelemetry-java-instrumentation:open-telemetry/opentelemetry-java-instrumentation#1054
通过这些案例,可以看到 Gradle Cache Action
在实际项目中的应用效果和最佳实践。