關於如何再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可以選擇)
