--- 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 項目 >  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 ``` >  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 >  * CI 結果 >  * 查看工作流中作業和步驟的詳細信息 >  ## Appendix & FAQ :::info ::: ###### tags: `Gradle`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up