Jenkins實現生產環境部署文件的回滾操做(Windows)

因爲dotnet項目的生產環境環境部署工具比較少,因此我使用jenkins做爲生產環境的自動化部署工具。html

既然有回滾操做,那麼就會有部署操做;要實現回滾,先要實現部署的操做,我在jenkins搭建了一鍵從測試環境發佈到正式環境的工具,部署的大體思路以下(詳細的操做點這裏,有詳細節點配置和部署配置):linux

前提:安裝jenkins的環境爲master,每個生產環境爲slave,slave是實時鏈接到master的。編程

一、測試環境上使用了CCNET進行每次的代碼變動編譯部署,在測試環境上進行編譯的版本爲Release(自己本地代碼運行時是能夠看見堆棧的,因此在測試站點環境上不必Debug模式,保證和生產環境模擬的幾乎一致)。windows

二、第1步操做完成後,那麼測試人員能夠根據這些變動進行測試,待完成一系列上線前的測試時,便可使用一鍵發佈測試環境的相關文件到生產環境(實質上是一鍵複製)。工具

三、這個一鍵部署在生產環境時所作的操做是先備份(這裏我用rar進行備份)所要更換的目錄和文件到指定文件夾存放以便還原(命名上遵循相應的規律,好比項目名+buildid),而後jenkins會從master複製相關的文件到slave的jenkins工做空間上(其實jenkins的工做空間有必定規律,會以相應的項目名稱命名文件夾),最後在生產環境上運行批處理文件進行從工做空間的文件替換相關的站點。測試

具體的實現請參考:(Jenkins實現測試環境到生產環境一鍵部署)http://www.cnblogs.com/EasonJim/p/6062690.htmlui

以上爲部署生產環境的相關操做,在每一次都會生產一個buildid,而備份文件又是項目名+buildid的形式,實現思路以下:url

一、jenkins新建項目用於指定的項目進行回滾。spa

二、安裝Build with Parameters的插件,用於指定哪一個項目的哪一個buildid進行回滾。.net

三、使用批處理對Build with Parameters的參數進行切割獲得相應的項目和buildid,在備份文件夾獲得相應的文件,而後用rar進行還原覆蓋。

具體的操做以下:

注意:此插件已經在2.x版本集成,官方的插件仍是比較新,自由選擇使用。

一、先安裝Build with Parameters插件(若是安裝不了可能地址被牆,能夠直接上這個網址http://blog.csdn.net/russ44/article/details/52266953下載離線文件包進行本地上傳),安裝包以後在新建項目時會出現這樣的界面選擇:

二、勾選了參數化構建過程以後,點擊添加參數會出現以下選項:

根據須要選擇相應的參數,這裏我直接選擇Run Parameter,由於這個能夠關聯現有項目,也就是下拉框,不用本身輸入,其實輸入參數會有輸錯的狀況,也是很是不便捷的。

選擇好Run Parameter以後,根據本身的項目進行輸入,個人輸入以下:

三、完成以後,那麼咱們須要進行批處理處理,點擊添加構建步驟,這裏根據須要,能夠是windows或者linux的,我這裏是windows的批處理

而後把批出所有寫好,這裏我提供一個我本身的特殊批處理:

Setlocal enabledelayedexpansion
set "projectKey=WH_DN_"//rem項目替換的key
set "bakUrl=d:\wwwroot\wh_dn\bak\"//ren備份文件夾存放的目錄
set url="%ProjectName%"//rem上面傳入的參數,基本格式:http://localhost:8080/job/WH_DN_Admin/37/
set "rollbackUrl=d:\"//rem備份文件夾要還原的位置
set "projectName="
set "buildID="
set url=%url::=/%
set url=%url:///=/%
set url=%url://=/%
//rem這一步實現切割獲得ProjectName和BuildID
for /f "tokens=1,2,3,4,5,6* delims=/" %%a in (%url%) do (
 set "projectName=%%e"
 set "buildID=%%f"
)
set projectName=!projectName:%projectKey%=!
set "fileName="
//rem這一步進行bak的文件夾查找根據上面獲得的ProjectName和BuildID
for %%a in (%bakUrl%*-%projectName%-%buildID%.bak.rar) do (
 set "fileName=%%a"
)
//rem這一步進行rar的覆蓋解壓
c:\"Program Files"\winrar\rar.exe x -ep2 -o+- %fileName% %rollbackUrl%

注意:若是要使用以上批處理,須要把//rem這些溫馨去掉,windows的批處理不支持這樣的註釋。

三、批處理搞定以後,就是構建後的提示功能,這裏我直接用郵件的提醒,根據實際須要進行配置,個人配置以下:

最後,需求完美實現!

在項目列表再也不是當即構建的按鈕,編程了Build with Parameters,以下:

很是的清晰!

最後是部署環境拓撲圖和流程:http://www.cnblogs.com/EasonJim/p/6007669.html

相關文章
相關標籤/搜索