---
# System prepended metadata

title: CI 持續集成
tags: [Gradle]

---

---
title: 'CI 持續集成'
disqus: kyleAlien
---

CI 持續集成
===

## Overview of Content

[TOC]

## GitHub Actions 概述

`GitHub Actions` 是 GitHub 中的內置的 CI 提供商，透過使用 `Gradle Build Action` 可以輕鬆集成項目到 `GitHub Actions`


在使用開始之前請確保你有以下工具

1. JDK 1.8 或以上的版本

2. 本地 Gradle，用於初始化新的 Gradle 項目

3. GitHub 帳戶

### GitHub 創建 Gradle 項目

* GitHub 新增一個有 Gradle 整合的項目

    1. 創建一個倉庫：放置 Gradle 項目

        > ![](https://hackmd.io/_uploads/B1LKWLEBh.png)

    2. 使用 Git 指令操作本地已有的 Gradle 項目，將本地項目推到遠端（GitHub 倉庫）


        ```shell=
        git init 
        
        git add .
        
        git commit -m "init project"
        
        git remote add origin 倉庫-SSH-地址
        
        git push -u origin master
        ```

### 啟動 Build Scan^TM^ 發布

* 添加設定到 `settings.gradle[.kts]` 文件中

    ```groovy=
    // settings.gradle

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

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

### 測試 CI 項目

* 在推送到遠端之前，要先確保在本地可正常建構，測試方式如下

    1. 將 CI 環境變量設定為 true 並開始建構，這時就會觸發 `settings.gradle` 的設定

        ```shell=
        # 測試指令

        CI=true ./gradlew build
        ```

        > ![](https://hackmd.io/_uploads/rJ7PU8EH2.png)

    2. 上面建構成功後，代表這個項目沒有問題，就可以推送到遠端倉庫

        ```shell=
        git add .

        git commit -m "feat: push gradle scan result"

        git push
        ```

### 設定 GitHub Actions - yml 檔

1. 在本地專案中添加一個檔案 yml 檔，它的路徑格式如下 `.github/workflows/<workflow-name>.yml` 

    > 以下，在項目根目錄下 創建 `.github/workflows/build-gradle-project.yml` 並寫入以下內容

    ```yaml=
    name: Build Gradle project

    on:
      push:

    jobs:
      build-gradle-project:

        runs-on: ubuntu-latest

        steps:
          - name: Checkout project sources
            uses: actions/checkout@v2

          - name: Setup Gradle
            uses: gradle/gradle-build-action@v2

          - name: Run build with Gradle Wrapper
            run: ./gradlew build
    ```
    :::success
    其他相關設定可以看 [**gradle-build-action**](https://github.com/gradle/gradle-build-action) 文檔
    :::

2. 最後透過 Git 將 yml 檔案添加進專案，並推送到 GitHub 遠端倉庫 

    ```shell=
    git add .

    git commit -m "feat: add CI file."

    git push
    ```

### 查看 GitHub - CI 結果

* 查看相對應的倉庫，其中的 `Actions` 可以看到集成項目的工作被安排進 CI

    > ![](https://hackmd.io/_uploads/rJusiL4Sn.png)

    * CI 結果

        > ![](https://hackmd.io/_uploads/HJT2n8VB3.png)

    * 查看工作流中作業和步驟的詳細信息

        > ![](https://hackmd.io/_uploads/HyN02LNr3.png)


## Appendix & FAQ

:::info
:::

###### tags: `Gradle`
