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!