Jenkins配置MSBuild實現自動部署2(項目實踐)

繼上一篇文章http://www.cnblogs.com/EasonJim/p/6077225.html,大體實現的思路,今天來記錄一個真實項目實踐。html

1、新建項目

選擇【構建一個自由風格的軟件項目】,其他的不要去選擇。java

2、項目配置

一、項目名稱

二、SVN遷出代碼配置

注意:若是時git就配置相應的git操做git

說明:web

【Credentials】爲svn的帳號密碼,經過【Add】按鈕進行配置。以下:windows

Local module directory】這個路徑時源代碼遷出時存放的路徑,切記,這裏的路徑時相對路徑,相對於jenkins的workspace的路徑,而不能時絕對路徑。服務器

其他都按照上面進行配置,主要實現了都有更新時自動遷出源代碼的功能,並觸發下一步的構建流程。svn

三、配置構建觸發器

這裏的觸發器時定時去查看svn是否有更新,有則進行下一步構建流程。測試

上面我配置的時每分鐘進行svn的檢查,若是想要不一樣的配置時間,點擊後面的問號進行查看。ui

四、構建前批處理刪除工做空間文件夾

注意:這一步可選操做,因爲個人項目特殊緣由,因此須要每次在構建前先清空文件夾的內容spa

批處理以下:

echo [INFO] 清除編譯後輸出的文件
mkdir %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
del /F /S /Q %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
cd %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
rd /S /Q %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\

五、配置MSBuild進行項目編譯

 

說明:

【MSBuild Version】是須要本身手動去配置的,配置方法以下:

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

【MSBuild Build File】爲Web工程的絕對路徑,可是可使用環境變量,即jenkins的工做空間%workspace%進行定義,也就是上面svn遷出代碼存放的路徑。

【Command Line Arguments】爲MSBuild的命令行運行參數,這裏我定義了程序使用Release版本,並配置了輸出路徑,腳本以下:

/p:OutputPath=%workspace%\BuildOutProject\Shop\1.1.0.123_Test;Configuration=Release 

一樣,這裏的輸出路徑只能是絕對路徑,不過可使用環境變量去定義。

詳細的MSBuild參數列表,參考:https://msdn.microsoft.com/zh-cn/library/ms164311.aspx

六、構建完成後清理不要的文件

這一步是可選操做,好比我編譯輸出時,web.config這些文件我是不須要上傳到測試站點的

命令以下:

echo [INFO] 刪除編譯後不須要上傳的文件
del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\bin\*.pdb
del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\bin\*.xml
del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\*.pdb
del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\packages.config
del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\Web*.config

rd /S /Q %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\Areas\CMS\

提示:這個腳本里麪包括了清楚文件和文件夾的。

七、進行壓包

這一步可選,能夠直接是跳到FTP進行每一個文件上傳,或者使用xcop進行復制。

批處理以下:

echo [INFO] 壓縮要上傳的文件
cd %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
call C:\"Program Files"\WinRAR\Rar.exe a -k -r -s -m1 -agYYYYMMDD-NN{-Upload-%BUILD_ID%} %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\

 提示:這裏的文件命名採用了有規律的命名方式。

八、配置ftp上傳

 

在【Name】上選擇的server是須要手動進行配置的,以下:

安裝插件【Publish Over FTP

在【系統管理】->【系統設置】->【Publish over FTP】->點擊【增長】按鈕,增長一個要鏈接的FTP:

 

注意:

【Source files】表示的不是絕對路徑,而是jenkins的workpase的路徑,至關於相對路徑,若是要上傳整個目錄包括子目錄的,最後加上【\**】;

BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\*-Upload-*.rar 

【Remove prefix】表示去除目錄前綴,若是不去除,將會按照上面的目錄依次建立。

BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\

【Remote directory】爲ftp的存放目錄,若是上面沒有這個目錄將會自動建立。

wwwroot\bak

【Exclude files】爲要排除的文件和文件夾,上面爲參考。

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

九、上傳完成後調用遠程cli進行解壓

前提:遠程服務器必須配置了部署的工程,參考:http://www.cnblogs.com/EasonJim/p/6086168.html

若是不是壓包上傳,上面ftp那一步就已經結束了。

批處理以下:

echo [INFO] 經過CLI調用公網Jenkins進行解包
set "fileName="
for %%a in (%workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\*-Upload-*.rar) do (
 set "fileName=%%~nxa"
)
java -jar "C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar" -s http://192.168.199.2:8081/ build Unzip -p FilePath=d:\wwwroot\wwwroot\bak\%fileName% -p UnzipPath=d:\wwwroot\wwwroot\wwwroot --username administrator --password administrator

提示:上面是經過批處理進行文件的查找,查找到打包的文件,而後經過遠程cli進行調用。

提示2:cli在調用時在windows上會由於權限問題而限制,須要進行特殊設置,參考:http://www.cnblogs.com/EasonJim/p/6086018.html

十、郵件發送配置

提示:採用的是郵件擴展插件配置,參考:http://www.cnblogs.com/EasonJim/p/6068002.html

提示:附帶上構建日誌到郵件中。

這裏選擇全部狀況都發送。

到此,整個項目實戰完成。

相關文章
相關標籤/搜索