设为首页 收藏本站
查看: 1446|回复: 0

[经验分享] Jenkins实现生产环境部署文件的回滚操作(Windows)

[复制链接]

尚未签到

发表于 2017-6-28 11:17:15 | 显示全部楼层 |阅读模式
  由于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下载离线文件包进行本地上传),安装包之后在新建项目时会出现这样的界面选择:
DSC0000.png

  2、勾选了参数化构建过程之后,点击添加参数会出现如下选项:
DSC0001.png

  根据需要选择相应的参数,这里我直接选择Run Parameter,因为这个可以关联现有项目,也就是下拉框,不用自己输入,其实输入参数会有输错的情况,也是非常不便捷的。
  选择好Run Parameter之后,根据自己的项目进行输入,我的输入如下:
DSC0002.png

  3、完成之后,那么我们需要进行批处理处理,点击添加构建步骤,这里根据需要,可以是windows或者linux的,我这里是windows的批处理
DSC0003.png

  然后把批出全部写好,这里我提供一个我自己的特殊批处理:



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、批处理搞定之后,就是构建后的提示功能,这里我直接用邮件的提醒,根据实际需要进行配置,我的配置如下:
DSC0004.png

  最后,需求完美实现!
  在项目列表不再是立即构建的按钮,编程了Build with Parameters,如下:
DSC0005.png

  非常的清晰!
  最后是部署环境拓扑图和流程:http://www.cnblogs.com/EasonJim/p/6007669.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388919-1-1.html 上篇帖子: [openstack]jenkins挂了怎么办 下篇帖子: Jenkins实现测试环境到生产环境一键部署(Windows)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表