日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Jenkins 搭建C++持续集成环境

發(fā)布時(shí)間:2024/3/24 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jenkins 搭建C++持续集成环境 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介

本文主要介紹如何通過 Jenkins 搭建 C++的持續(xù)集成環(huán)境。最后達(dá)到的效果是每天00:00 - 08:00之間構(gòu)建、測(cè)試和打包一次工程。

開發(fā)環(huán)境為 VS2015,測(cè)試工具為 CppUnit,打包工具為 Inno Setup。

本例的 Jenkins 版本為 Jenkins2.60.1

建立工程

新建空白解決方案,命名為 Calculator。勾選 [新建 GIT 存儲(chǔ)庫(kù)]。

建立開發(fā)項(xiàng)目

新建控制臺(tái)項(xiàng)目,命名為 Calculator。新建Calculator.h,內(nèi)容如下:

#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,內(nèi)容如下:

#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; }

建立測(cè)試項(xiàng)目

本例使用 CppUnit 作為測(cè)試工具,如果你還不了解它,請(qǐng)參見我的另一片博文:CppUnit 入門

新建控制臺(tái)項(xiàng)目,命名為 CalculatorTest。
將 CppUnit 頭文件和庫(kù)文件所在目錄加入到工程搜索目錄中,并將 CppUnit 庫(kù)文件加入到鏈接器的附加依賴項(xiàng)。
添加main.cpp,內(nèi)容如下:

#include "../Calculator/Calculator.h" #include "cppunit/TestFixture.h" #include "cppunit/extensions/HelperMacros.h" #include "cppunit/TestRunner.h" #include "cppunit/TestResult.h" #include "cppunit/TestResultCollector.h" #include "cppunit/TextOutputter.h" #include "cppunit/XmlOutputter.h" #include "cppunit/BriefTestProgressListener.h" #include <iostream> #include <fstream> #include <Windows.h>#include "cppunit/TextTestRunner.h"class CalculatorTestFixture : public CppUnit::TestFixture {CPPUNIT_TEST_SUITE(CalculatorTestFixture);CPPUNIT_TEST(testAdd);CPPUNIT_TEST(testSub);CPPUNIT_TEST_SUITE_END();public:virtual void setUp() override{m_calculator = new Calculator();}virtual void tearDown() override{delete m_calculator; m_calculator = nullptr;}public:void testAdd(){CPPUNIT_ASSERT(3 == m_calculator->add(1, 2));}void testSub(){CPPUNIT_ASSERT(1 == m_calculator->sub(2, 1));}private:Calculator *m_calculator; };CPPUNIT_TEST_SUITE_REGISTRATION(CalculatorTestFixture);int main() {CppUnit::TestRunner runner;runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());CppUnit::TestResult result;CppUnit::BriefTestProgressListener progressListener;result.addListener(&progressListener);CppUnit::TestResultCollector resultCollector;result.addListener(&resultCollector);runner.run(result);// 打印到控制臺(tái)CppUnit::TextOutputter textOutputter(&resultCollector, std::cout);textOutputter.write();// 打印到 xml 文件,以便 xUnit 插件處理std::ofstream fout("TEST-Calculator.xml");if (fout){CppUnit::XmlOutputter xmlOutputter(&resultCollector, fout);xmlOutputter.write();fout.close();}// 返回 0 表示成功return resultCollector.wasSuccessful() ? 0 : 1; }

建立發(fā)布腳本

本例用 Inno Setup 打包,在工程目錄新建 Calculator.iss,內(nèi)容如下:

[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"

提交代碼

切換到[團(tuán)隊(duì)資源管理器]頁簽,點(diǎn)擊左上角,在彈出菜單中選擇[更改],輸入日志,點(diǎn)擊[全部提交]按鈕。

準(zhǔn)備工作

本例要用到 Git、MSBuild 和 xUnit 三個(gè)插件,第一步就是安裝它們。

安裝 Git plugin

Git 插件一般在安裝 Jenkins 的時(shí)候作為默認(rèn)插件安裝。如果已經(jīng)安裝,則跳過這一步。如果沒有安裝,則需要手動(dòng)安裝。
在 Jenkins 管理頁面中,點(diǎn)擊[插件管理]進(jìn)入插件管理頁面,切換到[可選插件]頁簽,在右上角搜索框中輸入 Git plugin 找到 Git plugin,點(diǎn)擊[直接安裝]按鈕開始安裝。安裝好之后,就會(huì)在[已安裝]頁簽找到 Git plugin,如下圖:



安裝 MSBuild plugin

在 Jenkins 管理頁面中,點(diǎn)擊[插件管理]進(jìn)入插件管理頁面,切換到[可選插件]頁簽,在右上角搜索框中輸入 MSBuild 找到 MSBuild Plugin,點(diǎn)擊[直接安裝]按鈕開始安裝。如下圖:




安裝好之后,就會(huì)在[已安裝]頁簽找到 MSBuild Plugin。

回到 Jenkins 管理頁面中,點(diǎn)擊[Global Tool Configuration],進(jìn)入全局工具設(shè)置頁面。



找到[MSBuild]欄目,點(diǎn)擊[新增MSBuild]按鈕,[Name]隨意填寫,本例為MSBuild 14.0。[Path to MSBuild]填寫MSBuild.exe所在的實(shí)際路徑。如下圖。點(diǎn)擊[Save]按鈕保存并退出。



安裝 xUnit plugin

在 Jenkins 管理頁面中,點(diǎn)擊[插件管理]進(jìn)入插件管理頁面,切換到[可選插件]頁簽,在右上角搜索框中輸入 xUnit 找到 xUnit plugin,點(diǎn)擊[直接安裝]開始安裝,如下圖:




安裝好之后,就會(huì)在[已安裝]頁簽找到 xUnit plugin。

創(chuàng)建構(gòu)建和測(cè)試任務(wù)

由于構(gòu)建和測(cè)試結(jié)合得比較緊密,因此不把它們拆分為兩個(gè)任務(wù),而是合并成一個(gè)。

在 Jenkins 管理頁面中,點(diǎn)擊[新建]進(jìn)入新建頁面,[Enter an item name]填寫 Calculator Build and Test,任務(wù)類型選擇[構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目],如下圖所示。點(diǎn)擊[OK]按鈕進(jìn)入到設(shè)置頁面。




找到[源碼管理]欄目,選擇[Git],[Repository URL]填寫工程所在目錄。如下圖所示。點(diǎn)擊[Apply]按鈕使設(shè)置生效。



找到[構(gòu)建]欄目,點(diǎn)擊[增加構(gòu)建步驟],選擇[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(詳細(xì)的參數(shù)信息可以在命令行中執(zhí)行 MSBuild /?查看)。如下圖所示。點(diǎn)擊[Apply]按鈕使設(shè)置生效。



為了運(yùn)行測(cè)試用例,還需要增加一個(gè)構(gòu)建步驟。再次點(diǎn)擊[增加構(gòu)建步驟],選擇[Execute Windows batch command],如下圖所示:



在[命令]中填寫 Release\CalculatorTest.exe。如下圖所示。點(diǎn)擊[Apply]按鈕使設(shè)置生效。



找到[構(gòu)建后操作]欄目,點(diǎn)擊[增加構(gòu)建后操作步驟],選擇[Publish xUnit test result report],如下圖所示:



點(diǎn)擊[Add]按鈕,選擇[CppUnit-1.12.1(default)],如下圖所示:



在[Pattern]中填寫 TEST*.xml,如下圖所示:



最后,點(diǎn)擊[保存]按鈕保存設(shè)置并退出。
在任務(wù)控制面板頁面,點(diǎn)擊[立即構(gòu)建]進(jìn)行構(gòu)建。如下圖所示:



構(gòu)建完成之后,構(gòu)建歷史會(huì)出現(xiàn)在[Build History]列表中。前面紅色的圓點(diǎn)表示構(gòu)建失敗,藍(lán)色的圓點(diǎn)表示構(gòu)建成功。



在構(gòu)建歷史列表中點(diǎn)擊列表項(xiàng)可以查看構(gòu)建詳情。在構(gòu)建詳情頁面,可以點(diǎn)擊[Console Output]查看控制臺(tái)輸出。點(diǎn)擊[Test Result]可以查看測(cè)試結(jié)果。


創(chuàng)建發(fā)布任務(wù)

在 Jenkins 管理頁面中,點(diǎn)擊[新建]進(jìn)入新建頁面,[Enter an item name]填寫 Calculator Deploy,任務(wù)類型選擇[構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目],如下圖所示。點(diǎn)擊[OK]按鈕進(jìn)入到設(shè)置頁面。




找到[構(gòu)建]欄目,點(diǎn)擊[增加構(gòu)建步驟],選擇[Execute Windows batch command],如下圖所示:



在[命令]里輸入如下命令。 注意直接將命令寫在這里是不好的做法,最好是將命令寫在bat中,在這里執(zhí)行這個(gè)bat。這里為了演示而避繁就簡(jiǎn)。(其中iscc是Inno Setup的腳本編譯器,關(guān)于它的使用可自行查閱Inno Setup的幫助文檔)



點(diǎn)擊[保存按鈕]保存設(shè)置并退出。
在任務(wù)控制面板頁面,點(diǎn)擊[立即構(gòu)建]進(jìn)行構(gòu)建。構(gòu)建成功之后會(huì)在 [Jenkins 的workspace 目錄]\Calculator Deploy\Output 下找到安裝文件。

創(chuàng)建 Pipeline

下面創(chuàng)建一個(gè) Pipeline 項(xiàng)目將上面兩個(gè)項(xiàng)目串聯(lián)起來。

在 Jenkins 管理頁面中,點(diǎn)擊[新建]進(jìn)入新建頁面,[Enter an item name]填寫 Calculator Pipeline,任務(wù)類型選擇[Pipeline],如下圖所示。點(diǎn)擊[OK]按鈕進(jìn)入到設(shè)置頁面。



找到[Build Triggers]欄目,選擇[Build periodically],[日程表]填寫 H H(0-7) * * *(表示每天 00:00 - 08:00 進(jìn)行一次構(gòu)建,詳細(xì)的日程表表示法可以點(diǎn)擊右側(cè)的 ? 來查看)。如下圖所示。點(diǎn)擊[Apply]按鈕使設(shè)置生效。




找到[Pipeline]欄目,[Definition]選擇[Pipeline script],在[Script]中編寫如下腳本(Pipeline語法可以點(diǎn)擊[Pipeline Syntax]超鏈接查看):



點(diǎn)擊[保存]按鈕保存并退出。
在任務(wù)控制面板頁面,點(diǎn)擊[立即構(gòu)建]進(jìn)行構(gòu)建。構(gòu)建時(shí)可以看到 Stage View會(huì)根據(jù)任務(wù)執(zhí)行進(jìn)度實(shí)時(shí)地變化。構(gòu)建結(jié)束后會(huì)顯示完整的 Stage View,如下圖所示:


總結(jié)

  • 使用Jenkins可以很方便的搭建C++的持續(xù)集成環(huán)境。
  • 一個(gè)工程的構(gòu)建可以建立多個(gè)任務(wù)(構(gòu)建、測(cè)試、發(fā)布等),每個(gè)任務(wù)完成單一工作。
  • 使用Pipeline將多個(gè)任務(wù)整合成工作流。

總結(jié)

以上是生活随笔為你收集整理的Jenkins 搭建C++持续集成环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。