简介
本指南将向您展示如何创建一个工作流,使用 Gradle 构建系统为您的 Java 项目执行持续集成 (CI)。您创建的工作流将允许您查看对拉取请求的提交何时导致针对您的默认分支的构建或测试失败;这种方法可以帮助确保您的代码始终保持健康。您可以扩展 CI 工作流以缓存文件并从工作流运行中上传工件。
GitHub 托管的运行器具有预安装软件的工具缓存,其中包括 Java 开发工具包 (JDK) 和 Gradle。有关软件以及 JDK 和 Gradle 的预安装版本的列表,请参阅“使用 GitHub 托管的运行器”。
先决条件
您应该熟悉 YAML 和 GitHub Actions 的语法。更多信息,请参阅
我们建议您对 Java 和 Gradle 框架有基本的了解。更多信息,请参阅 Gradle 用户手册。
使用 Gradle 工作流模板
为了快速入门,请将工作流模板添加到仓库的.github/workflows
目录。
GitHub 提供了一个适用于 Gradle 的工作流模板,它应该适用于大多数使用 Gradle 的 Java 项目。本指南后续章节将举例说明如何自定义此工作流模板。
-
在 GitHub 上,导航到仓库的主页。
-
在您的仓库名称下,点击 Actions(操作).
-
如果您已经在仓库中拥有工作流,请点击**新建工作流**。
-
“选择工作流”页面显示推荐的工作流模板列表。搜索“Java with Gradle”。
-
在“Java with Gradle”工作流上,点击**配置**。此工作流执行以下步骤:
-
检出项目仓库的副本。
-
设置 Java JDK。
-
设置 Gradle 环境。
gradle/actions/setup-gradle
操作负责缓存工作流运行之间的状态,并提供所有 Gradle 执行的详细摘要。 -
“使用 Gradle 构建”步骤使用Gradle Wrapper执行
build
任务。 -
根据需要编辑工作流。例如,更改 Java 版本。
注意
- 此工作流模板包含一个未经 GitHub 认证的操作。第三方提供的操作受单独的服务条款、隐私策略和支持文档的约束。
- 如果您使用第三方操作,则应使用由提交 SHA 指定的版本。如果操作已修改,并且您想使用较新版本,则需要更新 SHA。您可以通过引用标签或分支来指定版本,但是操作可能会在没有任何警告的情况下发生更改。更多信息,请参阅GitHub Actions 的安全加固。
-
点击**提交更改**。
gradle.yml
工作流文件将添加到仓库的.github/workflows
目录。
指定 Java 版本和架构
工作流模板将PATH
设置为包含 x64 平台的 OpenJDK 8。如果您想使用其他版本的 Java 或针对其他架构(x64
或x86
),可以使用setup-java
操作来选择不同的 Java 运行时环境。
例如,要使用 Adoptium 为 x64 平台提供的 JDK 11 版,您可以使用setup-java
操作并将java-version
、distribution
和architecture
参数分别配置为'11'
、'temurin'
和x64
。
steps: - uses: actions/checkout@v4 - name: Set up JDK 11 for x64 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' architecture: x64
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
更多信息,请参阅setup-java
操作。
构建和测试您的代码
您可以使用与本地构建和测试代码相同的命令。
工作流模板默认情况下将运行build
任务。在默认的 Gradle 配置中,此命令将下载依赖项、构建类、运行测试并将类打包到其可分发格式(例如 JAR 文件)中。
如果您使用不同的命令来构建项目,或者您想使用不同的任务,您可以指定这些命令或任务。例如,您可能想要运行在您的ci.gradle文件中配置的package
任务。
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 - name: Build with Gradle run: ./gradlew -b ci.gradle package
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
- name: Build with Gradle
run: ./gradlew -b ci.gradle package
缓存依赖项
可以缓存您的构建依赖项以加快工作流运行速度。成功运行后,gradle/actions/setup-gradle
会缓存 Gradle 用户主目录的重要部分。在未来的作业中,将恢复缓存,以便无需重新编译构建脚本,也无需从远程包存储库下载依赖项。
使用gradle/actions/setup-gradle
操作时,默认情况下启用缓存。更多信息,请参阅gradle/actions/setup-gradle
。
将工作流数据打包为工件
构建成功且测试通过后,您可能希望将生成的 Java 包上传为构建工件。这会将构建的包存储为工作流运行的一部分,并允许您下载它们。工件可以帮助您在本地环境中测试和调试拉取请求,然后再合并它们。更多信息,请参阅存储和共享工作流数据。
Gradle 通常会在build/libs
目录中创建 JAR、EAR 或 WAR 等输出文件。您可以使用upload-artifact
操作上传该目录的内容。
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 - name: Build with Gradle run: ./gradlew build - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: Package path: build/libs
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
- name: Build with Gradle
run: ./gradlew build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: Package
path: build/libs