博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jenkins使用FTP进行一键部署及回滚(Windows)
阅读量:6590 次
发布时间:2019-06-24

本文共 2780 字,大约阅读时间需要 9 分钟。

前提条件:

1、必须有两台服务器,一个是生产环境,另一个是测试环境。

2、两台服务器上都必须安装了Jenkins。

3、其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:)。

4、jenkins-cli.jar文件放在"Jenkins\war\WEB-INF\jenkins-cli.jar"。

5、思路参考:

实现思路:

1、生产环境的Jenkins有两个工程解压和还原

2、测试环境的Jenkins有两个工程部署和回滚

3、测试环境部署工程时先压缩现有测试站点的包,通过FTP上传,完成后通过CLI调用生产环境的Jenkins解压工程进行解压(解压之前先备份)

4、测试环境回滚工程时,通过CLI通知生产环境的Jenkins还原工程进行解压(得到上一次部署时的备份包,还是解压之前先备份,最后解压)

具体实现步骤:

1、在生产环境的Jenkins配置一个解压操作的工程用于部署和一个还原工程用于回滚

解压:

命令行:

echo [INFO] 备份压缩操作call C:\"Program Files"\WinRAR\Rar.exe a -x*\Upload* -x*\ueditor* -x*\UploadFolder* %FilePath%.bak.rar %UnzipPath%echo [INFO] 解压操作call c:\"Program Files"\winrar\rar.exe x -ep2 -o+- %FilePath% %UnzipPath%

说明:

先备份再解压,也就是说每一次操作之前都要备份。

1)部署时,比如上传的文件名为1.rar,那么备份文件为1.rar.bak.rar。

还原:

命令行:

echo [INFO] 备份压缩操作call C:\"Program Files"\WinRAR\Rar.exe  a -k -r -s -m1 -x*\Upload* -x*\ueditor* -x*\UploadFolder* -x*\Web.config -x*\DownloadFile* -x*\ErrorLog* -x*\LogFiles* %FilePath%-%BUILD_ID%.restorebak.rar %UnzipPath%echo [INFO] 解压操作set "url=%UnzipPath%"call c:\"Program Files"\winrar\rar.exe x -ep2 -o+- %FilePath% %url:~0,3%

说明:

先备份再解压,也就是说每一次操作之前都要备份。

0)压缩时我加入了buildid作为参数,避免还原同一个时会重复的问题。

1)回滚时,比如上传备份的文件名为1.rar.bak.rar,那么回滚操作备份文件为1.rar.bak.rar.restorebak.rar。

2)这里由于上面备份的压缩包是全路径的,所以我用字符串切割提取到盘符直接解压。

2、在测试环境的Jenkins上配置两个工程,一个是部署,另一个是回滚

部署:

1)先在测试环境上备份要上传的包

2)使用FTP插件进行上传到生产环境

3)用CLI调用生产环境的解压Job进行解压

命令行:

echo [INFO] 压缩要上传的文件,这里已经排除了一些文件cd D:\wwwroot\call C:\"Program Files"\WinRAR\Rar.exe a -k -r -s -m1 -x*\Upload* -x*\ueditor* -x*\UploadFolder* -x*\Web.config -x*\DownloadFile* -x*\ErrorLog* -x*\LogFiles* -ag{%BUILD_ID%.push} D:\wwwroot\move %BUILD_ID%.push.rar %workspace%

说明:由于rar压缩的时候会带上全路径,所以我先cd进入到要备份的文件夹,然后a进行备份,这里要使用-ag参数备份时才是相对路径,由于ftp插件只能上传workspade的文件,所以最后把它移动到workspace。

特别说明,我这里的备份都是有规律的,比如:buildid.push.rar

然后是通过CLI远程命令进行远程调用生产环境的解压工程Unzip:

命令行:

echo [INFO] 通过CLI调用公网Jenkins进行解包java -jar "C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar" -s http://192.168.1.10:8888/ build Unzip -p FilePath=d:\%BUILD_ID%.push.rar -p UnzipPath=d:\wwwroot --username test --password test

 

说明:这个就是上面生产环境的解压Unzip工程,参数是工程约定的

完成!

回滚:

在测试环境上新建还原工程,并增加ProjectName的参数,这个参数指定上面的部署工程,功能为获得BuildID

命令行:

echo [INFO] 通过CLI调用公网Jenkins进行解包Setlocal enabledelayedexpansionset url="%ProjectName%"set "buildID="set url=%url::=/%set url=%url:///=/%set url=%url://=/%for /f "tokens=1,2,3,4,5,6* delims=/" %%a in (%url%) do ( set "buildID=%%f")java -jar "C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar" -s http://192.168.1.10:8888/ build Restore -p FilePath=E:\%buildID%.push.rar.bak.rar -p UnzipPath=E:\wwwroot --username test --password test

 

说明:上面通过ProjectName的参数获取BuildID,然后通过CLI远程调用生产环境的Restore工程,其中%buildID%.push.rar.bak.rar就是部署工程备份的压缩包,有规律的。

全部完成。

 

总结:

其实基于FTP上传的方案也是有回滚操作的!只不过这些接口来回调用通过CLI的形式。

 

==>如有问题,请联系我:easonjim#163.com,或者下方发表评论。<==

转载地址:http://nbuio.baihongyu.com/

你可能感兴趣的文章
C# CheckedListBox控件的使用方法
查看>>
spring Transaction Management --官方
查看>>
iOS开发-清理缓存功能的实现
查看>>
IS_ERR、PTR_ERR、ERR_PTR
查看>>
html5 canvas 奇怪的形状垂直渐变
查看>>
mac java环境
查看>>
lamp 一键安装
查看>>
SQL Server 2008 收缩日志(log)文件
查看>>
UICollectionView基础
查看>>
SSAS中CUBE行权限数据级权限控制
查看>>
PHP接入umeditor(百度富文本编辑器)
查看>>
如何解决ORA-12547: TNS:lost contact错
查看>>
android学习记录(三)百度地图错误---只有一个电话显示帧,没有地图内容。
查看>>
BZOJ2794 : [Poi2012]Cloakroom
查看>>
Swift——(两)Swift访问元组
查看>>
【Eclipse】安装subclipse的Eclipse插件
查看>>
Git查看、删除、重命名远程分支和tag【转】
查看>>
浅谈IM软件业务知识——非对称加密,RSA算法,数字签名,公钥,私钥
查看>>
Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结
查看>>
正确计算linux系统内存使用率
查看>>