前面咱們已經初步實現了開發集成環境、測試環境的持續集成(自動化構建、自動化測試、自動化部署)。但生產環境自動化部署遲遲沒有推動。其緣由主要在如下幾個方面:html
只要解決以上三個問題,咱們就能夠初步實現生產環境的自動化部署。node
.NET實現持續集成與自動化部署1-Jenkinswindows
.NET實現持續集成與自動化部署3-測試環境到生產環境策略服務器
經過以上策略能夠實現測試環境到生產環境的一鍵部署,實現了部署前的自動化備份,出現問題的自動化回滾,利用Jenkins Master-Slave特性解決了須要開放FTP端口的的問題,而且將先在測試站點測試好的文件,複製到正式站點上的一個緩衝區,進行預熱配置,以後在本機進行文件替換,速度是至關的快,解決了FTP上傳過程當中網絡問題致使站點掛掉的問題。網絡
缺陷與問題:運維
1.1 Jenkins系統管理-->管理節點-->新建節點
!
分佈式
1.2 輸入節點名稱,next,配置以下圖
工具
其中,有以下幾點須要注意:測試
【# of executors】根據CPU的個數來填寫數量
【遠程工做目錄】這個就是用來存放master到slave時,存放的臨時目錄,如slave的服務軟件也會放在此,而且會以每一個job名稱來區分開
【用法】只須要選擇【只容許運行綁定到這臺機器的Job】這種模式下,Jenkins只會構建哪些分配到這臺機器的Job。這容許一個節點專門保留給某種類型的Job。例如,在Jenkins上連續的執行測試,你能夠設置執行者數量爲1,那麼同一時間就只會有一個構建,一個實行者不會阻止其它構建,其它構建會在另外的節點運行。經過這個配置生產環境就能夠僅作本身的構建。
【啓動方式】只須要選擇【Launch agent via Java Web Start】,以服務的方式啓動,應用最廣且最好配置,其他的都太複雜,不建議使用。注意:2.x版本的默認沒有這個選項,須要單獨開啓。其他的基本按照上面默認選擇便可。
Launch agent via Java Web Start開啓方式:
Jenkins-->系統管理-->Configure Global Security-->Agents-->修改成隨機選取
1.3 點擊保存後,master上已經配置好節點,那麼接下來就是到節點的服務器上安裝slave的服務:
點擊右側列表的節點服務器,此時節點並未連通。
進入詳情頁面,會提示你如何安裝服務:
注意:因爲Slave服務爲Java服務,所以Slave服務器上需安裝JDK
當Slave服務器上出現如下服務時表明安裝並鏈接成功
此時回到Jenkins 服務器上查看狀態已經鏈接上
說明:這裏只介紹基於現有需求的一種策略,關於Jenkins Master-Slave鏈接機制與原理很少作介紹,網上關於這方面的介紹也不少,你們能夠自行搜索。
2.2 文本複製
文本複製可選擇兩個插件
Copy data to workspace plugin 插件
能夠複製Jenkins Master服務器的文件到Slave工做空間內
缺點:不支持參數化
Copy Artifact Plugin 插件
能夠實現Jenkins Slave-Slave Master-Slave之間的複製,能夠將一個Job構建後的生成物複製到當前工做空間內
缺點:需再要複製的Job內內配置Archive the artifact
能夠根據所需自行選擇插件,這裏爲了可以參數化咱們選擇Copy Artifact Plugin插件
配置說明:
注意:這裏須要前置Job配置
在要複製的Job內增長構建後操做以下圖:
2.3 自動化備份
填寫備份的批處理,這裏可使用WindowsRAR的壓縮命令,因此若是要用RAR的時候,確保機器上已經安裝WindowsRAR。注意名稱必需要有規則且每次構建不能重複,所以可使用項目名稱+BuildID或者日期+項目名稱+BuildID
//自動備份批處理命令 start c:\"Program Files"\winrar\rar.exe a -k -r -s -m1 -ag{HS.Shop.My-%BUILD_ID%.bak} {要備份到的文件夾} {要備份的文件夾}
2.4 覆蓋站點目錄下的文件
備份完成後將Jenkins工做空間下的文件複製到站點目錄下,此時必須保證發佈包已經排除掉了不須要覆蓋的文件,而且是穩定可用的版本。批處理命令可採用xcopy命令。關於xcopy命令的使用能夠自行百度
xcopy {slave工做空間上的項目文件夾} {要複製到替換的文件夾} /Y/E
到了這一步就完成了生產環境的自動化部署的任務配置。點擊構建便可完成測試環境到生產環境的一鍵部署。此時若程序出現問題能夠採用緊急修復或者自動化回滾。
3.1 一樣新建一個自由風格的軟件項目
這裏能夠配置兩個構建參數
1.回滾哪個項目的哪一次構建
2.回滾哪一臺服務器的構建(能夠多臺)
參數化配置可見下圖
3.2 自動化回滾批處理
Setlocal enabledelayedexpansion set "projectKey=ChioceBuild" set "bakUrl=D:\HS.Shop.Bak\HS.Shop.My\" //備份文件的路徑 set url="%ChioceBuild%" //參數 set "rollbackUrl=D:\" set "projectName=" set "buildID=" set url=%url::=/% set url=%url:///=/% set url=%url://=/% for /f "tokens=1,2,3,4,5,6,7,8* delims=/" %%a in (%url%) do ( set "projectName=%%g" set "buildID=%%h" ) set projectName=!projectName:%projectKey%=! set "fileName=" for %%a in (%bakUrl%%projectName%-%buildID%.bak.rar) do ( set "fileName=%%a" ) c:\"Program Files"\winrar\rar.exe x -ep2 -o+- %fileName% %rollbackUrl%
點擊保存便可完成自動化回滾任務的創建,點擊構建選擇參數便可進行回滾。
Jenkins是一個持續集成工具,其功能很是強大,能夠幫助咱們作自動構建、自動測試、自動發佈等等,它根據不一樣的需求實現各類各樣的功能,它能夠最大幅度的減小咱們平常工做中重複性的工做。以上僅僅是我根據當下所需研究的一種使用策略,可能有漏洞,也可能存在問題,但若是不肯意嘗試着去改進現有流程,去接受新的東西,那麼咱們永遠不會進步。而我對其使用的瞭解也不過是九牛一毛,你們能夠根據需求研究制定本身的使用策略。 最後但願你們:即便搬磚,也要搬出藝術感!作一個有追求的搬磚者!