简介
本指南介绍如何使用 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.com 上,导航到存储库的主页。
-
在存储库名称下,单击 “操作”。
-
如果存储库中已有工作流,请单击“新建工作流”。
-
“选择工作流”页面显示了一系列推荐的入门工作流。 搜索“Java with Gradle”。
-
在“Java with Gradle”工作流上,单击 “配置”****。
-
根据需要编辑工作流。 例如更改 Java 版本。
注意:
- 此入门工作流包含未通过 GitHub 认证的操作。 第三方提供的操作受单独的服务条款、隐私政策和支持文档管辖。
- 如果使用来自第三方的操作,则应使用提交 SHA 指定的版本。 如果操作已被修改,并且需要使用较新版本,则需要更新 SHA。 可以通过引用标记或分支来指定版本,但操作可能会在没有事先警告的情况下更改。 有关详细信息,请参阅“GitHub Actions 的安全强化”。
-
单击“提交更改”。
工作流文件 gradle.yml
将添加到存储库的 .github/workflows
目录中。
指定 Java 版本和体系结构
初学者工作流程将 PATH
设置为包含 OpenJDK 8,用于 x64 平台。 如果要使用不同的 Java 版本或面向不同的体系结构(x64
或 x86
),可以使用 setup-java
操作选择不同的 Java 运行时环境。
例如,要使用由 Adoptium 提供的 11 版本的 JDK,用于 x64 平台,可以使用 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@v3 with: java-version: '11' distribution: 'temurin' architecture: x64
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11 for x64
uses: actions/setup-java@v3
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@v3 with: java-version: '17' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - name: Run the Gradle package task uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: -b ci.gradle package
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
- name: Run the Gradle package task
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: -b ci.gradle package
缓存依赖项
可以缓存生成依赖项以加快工作流运行。 成功运行后,gradle/gradle-build-action
会缓存 Gradle 用户主目录的重要部分。 在将来的作业中,将还原缓存,这样就不需要重新编译构建脚本,也不需要从远程包存储库下载依赖项。
使用 gradle/gradle-build-action
操作时,默认启用缓存。 有关详细信息,请参阅 gradle/gradle-build-action
。
将工作流数据打包为构件
构建成功且测试通过后,您可能想要上传生成的 Java 包作为构件。 这会将构建的包存储为工作流程运行的一部分,并允许您下载它们。 构件可帮助您在拉取请求合并之前在本地环境中测试并调试它们。 有关详细信息,请参阅“将工作流程数据存储为构件”。
Gradle 通常会在 build/libs
目录中创建 JAR、EAR 或 WAR 等输出文件。 可以使用 upload-artifact
操作上传该目录的内容。
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - name: Build with Gradle uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: build - uses: actions/upload-artifact@v3 with: name: Package path: build/libs
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/libs