繼上一篇文章http://www.cnblogs.com/EasonJim/p/6077225.html,大體實現的思路,今天來記錄一個真實項目實踐。html
選擇【構建一個自由風格的軟件項目】,其他的不要去選擇。java
注意:若是時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 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\
提示:這裏的文件命名採用了有規律的命名方式。
在【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這樣的通配符,而目錄後面\**,這樣表明包括子目錄任何文件。
前提:遠程服務器必須配置了部署的工程,參考: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
提示:附帶上構建日誌到郵件中。
這裏選擇全部狀況都發送。
到此,整個項目實戰完成。