Jenkins 搭建C++持续集成环境
簡介
本文主要介紹如何通過 Jenkins 搭建 C++的持續集成環境。最后達到的效果是每天00:00 - 08:00之間構建、測試和打包一次工程。
開發環境為 VS2015,測試工具為 CppUnit,打包工具為 Inno Setup。
本例的 Jenkins 版本為 Jenkins2.60.1
建立工程
新建空白解決方案,命名為 Calculator。勾選 [新建 GIT 存儲庫]。
建立開發項目
新建控制臺項目,命名為 Calculator。新建Calculator.h,內容如下:
#ifndef CALCULATOR_H #define CALCULATOR_Hclass Calculator { public:int add(int num1, int num2){return num1 + num2;}int sub(int num1, int num2){return num1 - num2;} };#endif新建 main.cpp,內容如下:
#include "Calculator.h" #include <iostream>int main() {Calculator calculator;std::cout << "1 + 2 = " << calculator.add(1, 2) << std::endl;std::cout << "2 - 1 = " << calculator.sub(2, 1) << std::endl;return 0; }建立測試項目
本例使用 CppUnit 作為測試工具,如果你還不了解它,請參見我的另一片博文:CppUnit 入門
新建控制臺項目,命名為 CalculatorTest。
將 CppUnit 頭文件和庫文件所在目錄加入到工程搜索目錄中,并將 CppUnit 庫文件加入到鏈接器的附加依賴項。
添加main.cpp,內容如下:
建立發布腳本
本例用 Inno Setup 打包,在工程目錄新建 Calculator.iss,內容如下:
[Setup] AppName=Calculator AppVersion=1.5 DefaultDirName={pf}\Calculator DefaultGroupName=Calculator UninstallDisplayIcon={app}\Calculator.exe Compression=lzma2 SolidCompression=yes OutputBaseFilename=CalculatorSetup[Files] Source: "Calculator.exe"; DestDir: "{app}"[Icons] Name: "{group}\Calculator"; Filename: "{app}\Calculator.exe"提交代碼
切換到[團隊資源管理器]頁簽,點擊左上角,在彈出菜單中選擇[更改],輸入日志,點擊[全部提交]按鈕。
準備工作
本例要用到 Git、MSBuild 和 xUnit 三個插件,第一步就是安裝它們。
安裝 Git plugin
Git 插件一般在安裝 Jenkins 的時候作為默認插件安裝。如果已經安裝,則跳過這一步。如果沒有安裝,則需要手動安裝。
在 Jenkins 管理頁面中,點擊[插件管理]進入插件管理頁面,切換到[可選插件]頁簽,在右上角搜索框中輸入 Git plugin 找到 Git plugin,點擊[直接安裝]按鈕開始安裝。安裝好之后,就會在[已安裝]頁簽找到 Git plugin,如下圖:
安裝 MSBuild plugin
在 Jenkins 管理頁面中,點擊[插件管理]進入插件管理頁面,切換到[可選插件]頁簽,在右上角搜索框中輸入 MSBuild 找到 MSBuild Plugin,點擊[直接安裝]按鈕開始安裝。如下圖:
安裝好之后,就會在[已安裝]頁簽找到 MSBuild Plugin。
回到 Jenkins 管理頁面中,點擊[Global Tool Configuration],進入全局工具設置頁面。
找到[MSBuild]欄目,點擊[新增MSBuild]按鈕,[Name]隨意填寫,本例為MSBuild 14.0。[Path to MSBuild]填寫MSBuild.exe所在的實際路徑。如下圖。點擊[Save]按鈕保存并退出。
安裝 xUnit plugin
在 Jenkins 管理頁面中,點擊[插件管理]進入插件管理頁面,切換到[可選插件]頁簽,在右上角搜索框中輸入 xUnit 找到 xUnit plugin,點擊[直接安裝]開始安裝,如下圖:
安裝好之后,就會在[已安裝]頁簽找到 xUnit plugin。
創建構建和測試任務
由于構建和測試結合得比較緊密,因此不把它們拆分為兩個任務,而是合并成一個。
在 Jenkins 管理頁面中,點擊[新建]進入新建頁面,[Enter an item name]填寫 Calculator Build and Test,任務類型選擇[構建一個自由風格的軟件項目],如下圖所示。點擊[OK]按鈕進入到設置頁面。
找到[源碼管理]欄目,選擇[Git],[Repository URL]填寫工程所在目錄。如下圖所示。點擊[Apply]按鈕使設置生效。
找到[構建]欄目,點擊[增加構建步驟],選擇[Build a Visual Studio project or solution using MSBuild]。如下圖所示:
[MSBuild Version]選擇[MSBuild 14.0],[MSBuild Build File]填寫Calculator.sln,[Command Line Arguments]填寫 /t:Rebuild /p:Configuration=Release;Platform=x86(詳細的參數信息可以在命令行中執行 MSBuild /?查看)。如下圖所示。點擊[Apply]按鈕使設置生效。
為了運行測試用例,還需要增加一個構建步驟。再次點擊[增加構建步驟],選擇[Execute Windows batch command],如下圖所示:
在[命令]中填寫 Release\CalculatorTest.exe。如下圖所示。點擊[Apply]按鈕使設置生效。
找到[構建后操作]欄目,點擊[增加構建后操作步驟],選擇[Publish xUnit test result report],如下圖所示:
點擊[Add]按鈕,選擇[CppUnit-1.12.1(default)],如下圖所示:
在[Pattern]中填寫 TEST*.xml,如下圖所示:
最后,點擊[保存]按鈕保存設置并退出。
在任務控制面板頁面,點擊[立即構建]進行構建。如下圖所示:
構建完成之后,構建歷史會出現在[Build History]列表中。前面紅色的圓點表示構建失敗,藍色的圓點表示構建成功。
在構建歷史列表中點擊列表項可以查看構建詳情。在構建詳情頁面,可以點擊[Console Output]查看控制臺輸出。點擊[Test Result]可以查看測試結果。
創建發布任務
在 Jenkins 管理頁面中,點擊[新建]進入新建頁面,[Enter an item name]填寫 Calculator Deploy,任務類型選擇[構建一個自由風格的軟件項目],如下圖所示。點擊[OK]按鈕進入到設置頁面。
找到[構建]欄目,點擊[增加構建步驟],選擇[Execute Windows batch command],如下圖所示:
在[命令]里輸入如下命令。 注意直接將命令寫在這里是不好的做法,最好是將命令寫在bat中,在這里執行這個bat。這里為了演示而避繁就簡。(其中iscc是Inno Setup的腳本編譯器,關于它的使用可自行查閱Inno Setup的幫助文檔)
點擊[保存按鈕]保存設置并退出。
在任務控制面板頁面,點擊[立即構建]進行構建。構建成功之后會在 [Jenkins 的workspace 目錄]\Calculator Deploy\Output 下找到安裝文件。
創建 Pipeline
下面創建一個 Pipeline 項目將上面兩個項目串聯起來。
在 Jenkins 管理頁面中,點擊[新建]進入新建頁面,[Enter an item name]填寫 Calculator Pipeline,任務類型選擇[Pipeline],如下圖所示。點擊[OK]按鈕進入到設置頁面。
找到[Build Triggers]欄目,選擇[Build periodically],[日程表]填寫 H H(0-7) * * *(表示每天 00:00 - 08:00 進行一次構建,詳細的日程表表示法可以點擊右側的 ? 來查看)。如下圖所示。點擊[Apply]按鈕使設置生效。
找到[Pipeline]欄目,[Definition]選擇[Pipeline script],在[Script]中編寫如下腳本(Pipeline語法可以點擊[Pipeline Syntax]超鏈接查看):
點擊[保存]按鈕保存并退出。
在任務控制面板頁面,點擊[立即構建]進行構建。構建時可以看到 Stage View會根據任務執行進度實時地變化。構建結束后會顯示完整的 Stage View,如下圖所示:
總結
- 使用Jenkins可以很方便的搭建C++的持續集成環境。
- 一個工程的構建可以建立多個任務(構建、測試、發布等),每個任務完成單一工作。
- 使用Pipeline將多個任務整合成工作流。
總結
以上是生活随笔為你收集整理的Jenkins 搭建C++持续集成环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 60页政务大数据资源 平台项目可研方案
- 下一篇: C++ CAS 操作