使用 GitHub Actions 的頂尖工程團隊已能透過使用 Gradle 建置快取將 CI 建置時間縮短多達 90%。在此註冊參加我們的建置快取訓練課程,進一步瞭解您的團隊如何達成類似的成果。

建置 Gradle 專案並非僅止於開發人員的機器。持續整合 (CI) 是一種行之有年的做法,用於執行對版本控制中提交的每一項變更進行建置,以縮小回饋迴路。

在本指南中,我們將探討如何為在 GitHub 上託管的 Gradle 專案設定 GitHub Actions

簡介

GitHub Actions 是一種雲端 CI 解決方案供應商,直接內建於 GitHub 中,使其成為在 GitHub 上託管的專案的絕佳選擇。

使用 Gradle 建置動作 可以輕鬆地將任何 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 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 Build Scans 是檢視您的建置結果的絕佳方式,並提供您建置的寶貴見解。為了從 GitHub Actions 發佈 Build Scans,您需要預先核准條款和條件。

為此,請將下列內容新增至 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 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 工作流程的所有執行

可以過濾主要動作頁面,以列出 GitHub Actions 工作流程的所有執行。

View workflow executions

檢視 GitHub Actions 工作流程執行的結果

按一下工作流程執行的連結,將會顯示工作流程執行的詳細資料,包括連結到為建置產生的建置掃描。

設定 建置掃描 在雲端 CI 系統(例如 GitHub Actions)上特別有幫助,因為它有其他環境和測試結果資訊,否則很難取得。
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。