CircleCI 與持續整合

希希裡之海發表於2019-06-11

CircleCI 入門

最近在完成老師的作業:使用 CircleCI 進行持續整合,現將過程書寫下來,與大家一起學習進步。


A. What is CircleCI?

1. 什麼是持續整合

持續整合(Continuous Integration)通常縮寫為 CI,
持續整合指的是,當程式碼有變更時,立即進行構建和測試,反饋執行結果,我們可以根據測試結果,確定新程式碼是否可以和原有程式碼正確的整合在一起。
讓你能夠在開發中隨時發現問題,在快速的產品迭代中還可以保持很高的質量。因為修復問題的成本隨著時間的推移而增長,越早發現,修復成本越低。

2. 什麼是持續部署

持續部署(Continuous Deployment)通常縮寫為 CD,
持續部署指的是,當程式碼有變更時,自動進行測試和構建,如果一切順利則自動部署到伺服器上。

3. 什麼是 CircleCI

CircleCI 是一個持續整合/持續部署的服務,開源專案可以免費使用,他的價格取決於你需要併發構建例項的數量,單個例項是免費的。

官網地址

4. CircleCI 能做什麼

他可以繫結 GitHub/Bitbucket,只要你的程式碼有變更,就會自動抓取,根據你的配置,提供執行環境,執行測試、構建和部署。

5. CircleCI 的工作流程

CircleCI 與持續整合


B. 使用 CircleCI 持續整合和自動部署到 GitHub,進行 junit 單元測試

建議完成該實驗最好在 Linux 環境下進行,能避免很多問題,CircleCI 的構建環境也只有 Linux 和 MacOS,並不包含 Windows。

如果是 Windows 系統,這裡我建議使用 WSL,簡單方便快捷,還特別好用,畢竟是最強的 Linux 發行版(滑稽)。

1. 建立測試目錄

建立一個名為 circleTest 的測試資料夾,移動至該資料夾下。

mkdir circleTest
cd circleTest
2. 單元測試

我們先在本地進行單元測試。

首先匯入 maven 依賴:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

建立測試檔案:

package test;

import org.junit.Assert;
import org.junit.Test;

public class TestClass {

    @Test
    public void testName() {
        Assert.assertEquals(1, 1);
    }

}

本地執行一下:

CircleCI 與持續整合

可以看到沒有問題,我們將 java 專案匯出為 jar 包。執行命令:

mvn package

複製 target 目錄下的 jar 檔案到之前建立好的 circleciTest 目錄下:

CircleCI 與持續整合

然後在 circleciTest 目錄下執行命令:

java -cp ./RunUt-1.0-SNAPSHOT.jar:RunUt/* org.junit.runner.JUnitCore test.TestClass

檢視測試用例通過。

3. CircleCI 本地配置

要使用 CircleCI,首先在專案 circleciTest 目錄下建立一個名為 .circleci 的資料夾,並新建 config.yml 檔案。

config.yml:

version: 2
jobs:
  build:
    docker:
      - image: circleci/openjdk:8u181-jdk
    steps:
      - checkout
      - run:
          name: Testing application
          command: java -cp ./RunUt-1.0-SNAPSHOT.jar:RunUt/* org.junit.runner.JUnitCore test.TestClass

關於該配置檔案的詳細資訊,可以參考 官方文件

4. 使用 GitHub 實現持續整合

進入 CircleCI 官網,點選 Explore Integrations,跳轉後選擇 Start Building for Free,然後選擇 Sign Up With GitHub,與自己的GitHub 賬號進行相關聯。

關聯後便進入控制介面。

CircleCI 與持續整合

5. 上傳測試檔案到 GitHub

在 GitHub 建立一個新的 repository ,關聯本地倉庫,進入本地的 circleciTest 目錄,執行以下命令:

git init
git add ./
git commit -m "first commit"
git push origin master
6. 更改 GitHub 設定選項

將原生程式碼上傳至遠端倉庫後,我們點選 Settings,選擇 Webhooks 選項,再點選 Edit 按鈕:

CircleCI 與持續整合

選擇 Just the push event:

CircleCI 與持續整合

7. 使用 CircleCI 進行單元測試

在 CircleCI 控制皮膚選擇 Add Project,然後關聯之前上傳的 circleciTest 專案:

CircleCI 與持續整合

如果我們重新提交了程式碼,可以在 GitHub 倉庫下的 commits 介面下看到我們的提交記錄,並且 CircleCI 會實現自動部署,可以很直觀的檢視到提交的程式碼是否正確通過執行:

CircleCI 與持續整合

點選 Details 進行 CircleCI 該專案的設定介面,我們便能完整的看到執行情況了:

CircleCI 與持續整合

測試通過:Success!


C. 測試用例

circleciTest


參考

<https://www.jianshu.com/p/36af6af74dfc>

相關文章