CircleCI 入門
最近在完成老師的作業:使用 CircleCI 進行持續整合,現將過程書寫下來,與大家一起學習進步。
A. What is CircleCI?
1. 什麼是持續整合
持續整合(Continuous Integration)通常縮寫為 CI,
持續整合指的是,當程式碼有變更時,立即進行構建和測試,反饋執行結果,我們可以根據測試結果,確定新程式碼是否可以和原有程式碼正確的整合在一起。
讓你能夠在開發中隨時發現問題,在快速的產品迭代中還可以保持很高的質量。因為修復問題的成本隨著時間的推移而增長,越早發現,修復成本越低。
2. 什麼是持續部署
持續部署(Continuous Deployment)通常縮寫為 CD,
持續部署指的是,當程式碼有變更時,自動進行測試和構建,如果一切順利則自動部署到伺服器上。
3. 什麼是 CircleCI
CircleCI 是一個持續整合/持續部署的服務,開源專案可以免費使用,他的價格取決於你需要併發構建例項的數量,單個例項是免費的。
4. CircleCI 能做什麼
他可以繫結 GitHub/Bitbucket,只要你的程式碼有變更,就會自動抓取,根據你的配置,提供執行環境,執行測試、構建和部署。
5. 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);
}
}
本地執行一下:
可以看到沒有問題,我們將 java 專案匯出為 jar 包。執行命令:
mvn package
複製 target 目錄下的 jar 檔案到之前建立好的 circleciTest 目錄下:
然後在 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 賬號進行相關聯。
關聯後便進入控制介面。
5. 上傳測試檔案到 GitHub
在 GitHub 建立一個新的 repository ,關聯本地倉庫,進入本地的 circleciTest 目錄,執行以下命令:
git init
git add ./
git commit -m "first commit"
git push origin master
6. 更改 GitHub 設定選項
將原生程式碼上傳至遠端倉庫後,我們點選 Settings,選擇 Webhooks 選項,再點選 Edit 按鈕:
選擇 Just the push event:
7. 使用 CircleCI 進行單元測試
在 CircleCI 控制皮膚選擇 Add Project,然後關聯之前上傳的 circleciTest 專案:
如果我們重新提交了程式碼,可以在 GitHub 倉庫下的 commits 介面下看到我們的提交記錄,並且 CircleCI 會實現自動部署,可以很直觀的檢視到提交的程式碼是否正確通過執行:
點選 Details 進行 CircleCI 該專案的設定介面,我們便能完整的看到執行情況了:
測試通過:Success!