jenkins windows slave 構建c/c++代碼


        關於如何再centos系統上的jenkins master下搭建windows系統的jenkins slave節點,本篇博客中不做介紹,如果有需要的話,請參考我的另外一篇博客,在其中介紹了不同系統的jenkins slave的搭建,包含ios的,centos的,windows的,都是以我自己的實際搭建寫的,並且有某些特殊情況的說明以及處理,非常適合做Jenkins的分布式構建的搭建鏈接是https://www.cnblogs.com/zndxall/p/8297356.html。

  本篇主要介紹如何在jenkins master上設置jenkins slave 構建c/c++的包。

1.在‘系統管理’--> "Global Tool Configuration"設置msbuild 配置,如下:

其中Name可以隨意寫,后面在任務設置中會使用到,最后設置和版本相關的,路徑為你的jenkins slave上的msbuild.exe所在的目錄,我的填寫:

Name: MSBuild 14.0

Path to MSBuild:C:\Program Files (x86)\MSBuild\14.0\Bin

這時你可以會問,你的jenkins master是centos的系統啊,這個路徑明顯就是windows的路徑啊,你不是應該去jenkins 的節點管理那里設置windows 節點嗎?這個時候,上面截圖中的黃色的提示語就很好的告訴了我們:

C:\Program Files (x86)\MSBuild\14.0\Bin is not a directory on the Jenkins master (but perhaps it exists on some agents)

他告訴我們這個地址master上不存在,可能在某個slave 節點上。所以,相信我,這樣配置msbuild是沒問題的。

一種方法是:用插件構建

  在任務設置的時候,設置構建在節點上進行,節點的設置如下:

在添加構建步驟時選擇msbuild,如下:

 

設置如下:

 其中:

MSBuild Version: 就是上一步驟中設置的MSbuild的Name。

MSBuild File:是要構建的工程的sln的文件的路徑。

Command Line Arguments: 是要執行的命令,/t:Rebuild /p:Configuration=Release;Platform=x86,其中Configuration 接的是構建類型,可是是Debug,也可以是Release;而Platfom指的是對應的平台,可以是x86,也可以是x64(但是遇到了一個問題,把x86換成Win32,一直報命令錯誤,不清楚怎么回事,大家可以試試,如果有明白的,可以在評論里給大家解釋下)

 其他的設置,比如代碼下載之類的,就不細說了,和jenkins master上配置是一樣的。接下來就可以構建啦~~~

另一種方法:腳本實現

  此外,一般情況,除了單純的構建,我們還需要指定分支,並切換到對應分支,構建結束后回收對應的文件到ftp上,這時你就可以用腳本實現了,腳本win_build.bat中的代碼如下,供參考:

@echo off
echo vs_home=%VS2015_HOME%
set devenv="%VS2015_HOME%\Common7\IDE\devenv.com"
set msbuild="C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe"
set vcvars="%VS2015_HOME%\VC/vcvarsall.bat"
set ftp_dir=\\192.168.8.2\ftp\output\Test
set cur_path=%cd%
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
set mytime=%time:~0,2%%time:~3,2%
set result_dir=%datevar%%mytime%
:: build type, debug or release
set type=%1
::build platform, x86 or x64
set platform=%2
::project sln name
set proj=%3
::build branch
set b_branch=%4
set sln_file=%cur_path%\build\win32\lesdk.sln
echo "++++++++++++input config:type=%type%,platform=%platform%,proj=%proj%,b_branch=%b_branch%+++++"
git checkout %b_branch%
git pull
echo "check branch:"
git branch
echo "=====================set %platform% env========================"
if "%platform%"=="x86" call %vcvars% x86
if "%platform%"=="x64" call %vcvars% x86_amd64

echo "==============starting build %platform% %type%================="
%msbuild% %sln_file% /t:Rebuild /p:Configuration=%type%;Platform=%platform%
::devenv 的 /projectconfig 必須和/project 參數一起使用
::%devenv% /Rebuild %type% %proj%.sln /project "%proj%/%proj%.vcxproj" /projectconfig "%type%|%platform%"

echo "===================copy result to ftp =========================="
echo result_dir=%result_dir%_%b_branch%_%platform%_%type%_lesdk
md target\%result_dir%_%b_branch%_%platform%_%type%_lesdk
move bin\win32\%type%\*.dll target\%result_dir%_%b_branch%_%platform%_%type%_lesdk\
move framecore\poco\bin\*.dll target\%result_dir%_%b_branch%_%platform%_%type%_lesdk\
xcopy /S /E /Y %cur_path%\target %ftp_dir%\
echo ftp_path=%ftp_dir%\%result_dir%_%b_branch%_%platform%_%type%_lesdk

然后在jenkins上設置bat腳本構建,構建命令為: call win_build.bat Debug  x86   master

(參數Debug是構建類型,x86是平台,master是分支)

 

(這個插一句,以我的實際操作證明在jenkins  節點管理處設置msbuild 是沒用的:

 我也去jenkins 節點管理出查找看能否設置,盡管我設置了msbuild.exe的路徑,如下:

 這樣你會發現在使用第一種方式構建(即插件構建)時,沒有MSBuild Version可以選擇)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM