由於dotnet項目的生產環境環境部署工具比較少,所以我使用jenkins作為生產環境的自動化部署工具。
既然有回滾操作,那么就會有部署操作;要實現回滾,先要實現部署的操作,我在jenkins搭建了一鍵從測試環境發布到正式環境的工具,部署的大致思路如下(詳細的操作點這里,有詳細節點配置和部署配置):
前提:安裝jenkins的環境為master,每一個生產環境為slave,slave是實時連接到master的。
1、測試環境上使用了CCNET進行每次的代碼變更編譯部署,在測試環境上進行編譯的版本為Release(本身本地代碼運行時是可以看見堆棧的,所以在測試站點環境上沒必要Debug模式,保證和生產環境模擬的幾乎一致)。
2、第1步操作完成后,那么測試人員可以根據這些變更進行測試,待完成一系列上線前的測試時,即可使用一鍵發布測試環境的相關文件到生產環境(實質上是一鍵復制)。
3、這個一鍵部署在生產環境時所做的操作是先備份(這里我用rar進行備份)所要更換的目錄和文件到指定文件夾存放以便還原(命名上遵循相應的規律,比如項目名+buildid),然后jenkins會從master復制相關的文件到slave的jenkins工作空間上(其實jenkins的工作空間有一定規律,會以相應的項目名稱命名文件夾),最后在生產環境上運行批處理文件進行從工作空間的文件替換相關的站點。
具體的實現請參考:(Jenkins實現測試環境到生產環境一鍵部署)http://www.cnblogs.com/EasonJim/p/6062690.html
以上為部署生產環境的相關操作,在每一次都會生產一個buildid,而備份文件又是項目名+buildid的形式,實現思路如下:
1、jenkins新建項目用於指定的項目進行回滾。
2、安裝Build with Parameters的插件,用於指定哪個項目的哪個buildid進行回滾。
3、使用批處理對Build with Parameters的參數進行切割得到相應的項目和buildid,在備份文件夾得到相應的文件,然后用rar進行還原覆蓋。
具體的操作如下:
注意:此插件已經在2.x版本集成,官方的插件還是比較新,自由選擇使用。
1、先安裝Build with Parameters插件(如果安裝不了可能地址被牆,可以直接上這個網址http://blog.csdn.net/russ44/article/details/52266953下載離線文件包進行本地上傳),安裝包之后在新建項目時會出現這樣的界面選擇:
2、勾選了參數化構建過程之后,點擊添加參數會出現如下選項:
根據需要選擇相應的參數,這里我直接選擇Run Parameter,因為這個可以關聯現有項目,也就是下拉框,不用自己輸入,其實輸入參數會有輸錯的情況,也是非常不便捷的。
選擇好Run Parameter之后,根據自己的項目進行輸入,我的輸入如下:
3、完成之后,那么我們需要進行批處理處理,點擊添加構建步驟,這里根據需要,可以是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的批處理不支持這樣的注釋。
3、批處理搞定之后,就是構建后的提示功能,這里我直接用郵件的提醒,根據實際需要進行配置,我的配置如下:
最后,需求完美實現!
在項目列表不再是立即構建的按鈕,編程了Build with Parameters,如下:
非常的清晰!
最后是部署環境拓撲圖和流程:http://www.cnblogs.com/EasonJim/p/6007669.html