天天看點

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

所要用到的主要插件:

【MSBuild Plugin】

具體操作:

1、配置MSBuild的版本

【系統管理】->【Global Tool Configuration】->【MSBuild】,點選【新增MSBuild】進行版本的添加,如下:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

注意:其中Path to MSBuild為檔案夾路徑,代碼要編譯的那台機器的檔案夾,如果綁定的是slave時,這個路徑就代表這slave的路徑

最後,點選【Save】完成儲存。

注意:如果是4.6的項目,參考:http://www.cnblogs.com/EasonJim/p/6038363.html

2、建立項目進行測試

這裡假設在要進行建構的機器上已經建立好項目,并放在“D:\project\WebApplication1”。

建立Jenkins的測試Job。

在【建構】節點增加【增加建構步驟】,選擇【Build a Visual Studio project or solution using MSBuild】,如下:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

注意:這裡建議全部項目都編譯csproj檔案,不建議sln,sln不精确到底哪個項目有用。

輸出的目錄在指令行上輸入。注意指令行不能換行,且最後一個分号不用寫!

點選【儲存】,然後測試一下效果:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

成功釋出。

注意:如果是編譯Web項目,架設我要釋出到“D:\projectBuildOut\WebApplication1”目錄下,那麼最後編譯的Web工程為"D:\projectBuildOut\WebApplication1\_PublishedWebsites\WebApplication1",中間多了_PublishedWebsites檔案夾。

3、配置SVN自動簽出代碼

在Job的配置頁面上選擇【源代碼管理】->【Subversion】,如下:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

其中【Credentials】為SVN的賬号密碼,如下添加:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

【Local module directory】為SVN簽出的目錄,注意:此目錄不能輸入絕對路徑,隻能是相對路徑,比如jenkins所在本機的workpase為D:\jenkins,那麼最後簽出的代碼就在這個目錄下。

其餘預設即可。

接下來是定時檢測,這裡直接使用每分鐘檢查是否有更新來進行SVN的Update:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

勾選【Poll SCM】輸入【* * * * *】(注意是有空格隔開的)。如果要看這些用法,點選右側問号即可。

最後儲存測試。可以手動Build,也可以直接遷入代碼之後自動Build。

4、把編譯後的檔案通過FTP上傳

安裝插件【Publish Over FTP】

在【系統管理】->【系統設定】->【Publish over FTP】->點選【增加】按鈕,增加一個要連接配接的FTP:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

配置基本保持預設,如果有特殊端口等設定的,可以點選【進階】進行配置。最後可以通過【Test Configuration】按鈕進行測試。

在Job上【建構後操作】->【增加建構後操作步驟】->【Send build artifacts over FTP】:

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)

注意:【Source files】表示的不是絕對路徑,而是jenkins的workpase的路徑,相當于相對路徑,如果要上傳整個目錄包括子目錄的,最後加上【\**】;【Remove prefix】表示去除目錄字首,如果不去除,将會按照上面的目錄依次建立。【Exclude files】為要排除的檔案和檔案夾,上面為參考。

提示:ftp上傳檔案時多一點使用通配符,比如要上傳1uplad2016.rar檔案,可以使用*upload*.rar這樣的通配符,而目錄後面\**,這樣代表包括子目錄任何檔案。

5、BAT

Jenkins配置MSBuild實作自動部署(MSBuild+SVN/Subversion+FTP+BAT)