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

构建 Gradle 项目并不仅仅限于开发人员的机器。 持续集成(CI) 是一种由来已久的实践,用于为提交给版本控制的每个单独更改运行构建,以收紧反馈循环。

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

介绍

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

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

你需要什么

  • 文本编辑器

  • 命令提示符

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

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

  • 一个 GitHub 帐户

在 GitHub 上设置 Gradle 项目

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

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

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

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

创建新的 GitHub 存储库

将存储库克隆到本地

$ git clone git@github.com:<YOUR-GITHUB-USER>/github-actions-gradle-sample.git
Cloning into 'github-actions-gradle-sample'...
$ cd github-actions-gradle-sample

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

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

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

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

启用 Build Scan™ 发布

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

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

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 操作

.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 工作流程的所有运行

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

查看工作流程执行情况

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

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

配置构建扫描对于 GitHub Actions 等云 CI 系统特别有用,因为它具有其他方式难以获取的额外环境和测试结果信息。
查看工作流执行详情

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

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

查看工作流程作业详细信息

启用下载工件的缓存

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

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

查看缓存条目详细信息

进一步阅读

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

概括

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