使用 GitHub Actions 的顶级工程团队通过使用 Gradle 构建缓存,将 CI 构建时间缩短了高达 90%。在此注册参加我们的构建缓存培训课程,了解您的团队如何实现类似的结果。

构建 Gradle 项目并不止于开发人员的机器。 持续集成 (CI) 是一种长期建立的实践,用于对提交到版本控制的每一个更改运行构建,以收紧反馈循环。

在本指南中,我们将讨论如何为托管在 GitHub 上的 Gradle 项目配置 GitHub Actions

简介

GitHub Actions 是一个基于云的 CI 解决方案提供商,直接内置于 GitHub,使其成为托管在 GitHub 上的项目的绝佳选择。

使用 Gradle Build Action 可以轻松地将任何 Gradle 项目集成到 GitHub Actions 工作流程中。

您需要什么

  • 文本编辑器

  • 命令提示符

  • Java 开发工具包 (JDK),版本 1.8 或更高版本

  • 本地 Gradle 安装,用于初始化新的 Gradle 项目

  • GitHub 帐户

在 GitHub 上设置 Gradle 项目

如果您在 GitHub 上托管了现有的 Gradle 项目,则可以跳过此步骤,直接转到 配置 GitHub Actions

如果没有,请按照以下步骤在 GitHub 上初始化新的 Gradle 项目。

为您的项目创建一个新的 GitHub 存储库

通过 GitHub 用户界面,创建一个名为 github-actions-gradle-sample 的新存储库。

Create new GitHub repository

在本地克隆存储库

$ git clone [email protected]:<YOUR-GITHUB-USER>/github-actions-gradle-sample.git
Cloning into 'github-actions-gradle-sample'...
$ cd github-actions-gradle-sample

初始化 Gradle 项目并提交到存储库

使用 gradle init 创建一个新的 Gradle 项目。您可以在 init 期间选择任何可用的选项,但我们建议选择“library”作为项目类型。

项目生成后,提交更改并推送到存储库。

$ gradle init
$ git add .
$ git commit -m "Initial commit"
$ git push

启用 Build Scan™ 发布

Gradle Build Scans 是查看构建结果并提供有关构建的宝贵见解的好方法。为了从 GitHub Actions 发布 Build Scans,您需要预先批准条款和条件。

为此,请将以下内容添加到您的 settings.gradle[.kts] 文件的顶部。GitHub Actions 会设置“CI”环境变量

plugins {
    id("com.gradle.enterprise") version("3.16.2")
}

gradleEnterprise {
    if (System.getenv("CI") != null) {
        buildScan {
            publishAlways()
            termsOfServiceUrl = "https://gradle.com/terms-of-service"
            termsOfServiceAgree = "yes"
        }
    }
}

测试构建项目

该项目使用 Gradle Wrapper 来构建项目。对于任何 Gradle 项目来说,这都是一个推荐的做法,因为它使您的项目能够在 CI 上构建,而无需安装 Gradle 运行时。

在要求 GitHub Actions 构建您的项目之前,确保它在本地构建非常有用。添加“CI”环境变量将模拟在 GitHub Actions 上运行构建。

以下命令可以实现这一点

$ CI=true ./gradlew build

BUILD SUCCESSFUL

Publishing build scan...
https://gradle.com/s/7mtynxxmesdio

如果构建按预期工作,请提交更改并推送到存储库。

$ git commit -a -m "Publish Build Scans from GitHub Actions"
$ git push

配置 GitHub Actions

您可以通过在存储库中添加一个.github/workflows/<workflow-name>.yml文件来创建 GitHub Actions 工作流。此工作流定义文件包含在 GitHub Actions 上构建项目的相关说明。

以下工作流文件指示 GitHub Actions 使用 Gradle Wrapper 构建您的 Gradle 项目,由 GitHub Actions 的默认 Java 发行版执行。创建一个名为.github/workflows/build-gradle-project.yml的新文件,内容如下,并将其推送到 GitHub 存储库。

name: Build Gradle project

on:
  push:

jobs:
  build-gradle-project:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout project sources
      uses: actions/checkout@v4
    - name: Setup Gradle
      uses: gradle/gradle-build-action@v2
    - name: Run build with Gradle Wrapper
      run: ./gradlew build

提交更改并推送到存储库

$ git add .
$ git commit -m "Add GitHub Actions workflow"
$ git push

查看 GitHub Actions 结果

推送此工作流文件后,您应该立即在存储库的 GitHub Actions 页面(例如 https://github.com/gradle/gradle/actions)中看到工作流执行。对存储库的任何后续推送都将触发工作流运行。

列出 GitHub Actions 工作流的所有运行

主 Actions 页面可以过滤以列出 GitHub Actions 工作流的所有运行。

View workflow executions

查看 GitHub Actions 工作流运行的结果

单击工作流运行的链接将显示工作流运行的详细信息,包括指向为构建生成的构建扫描的链接。

配置 构建扫描 在像 GitHub Actions 这样的云 CI 系统上特别有用,因为它具有其他环境和测试结果信息,这些信息在其他情况下很难获得。
View workflow execution details

查看工作流中作业和步骤的详细信息

最后,您可以查看单个工作流作业和为作业定义的每个步骤的详细信息

View workflow job details

启用下载的工件的缓存

此工作流使用的 gradle-build-action 将启用在内置 GitHub Actions 缓存中保存和恢复 Gradle 用户主目录。这将通过避免重新下载 Gradle 版本和项目依赖项以及重用先前工作流执行的状态来加快您的 GitHub Actions 构建速度。

有关从缓存中保存/恢复哪些条目的详细信息,可以在Post Setup Gradle步骤中查看

View cache entry details

进一步阅读

了解有关使用 GitHub Actions 构建 Gradle 项目的更多信息

总结

在 CI 上执行 Gradle 构建只需几个步骤即可设置和配置。快速反馈的好处不言而喻。GitHub Actions 为在 GitHub 上托管的任何 Gradle 项目设置 CI 提供了一种简单便捷的机制。