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

相关文章
相关标签/搜索