Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
前提:
这一篇是继上一篇http://www.cnblogs.com/EasonJim/p/6092938.html的真实项目实践。
思路和大致实现步骤请参照上一篇文章。
注意:这篇文章涉及到两台服务器:1为测试服务器。2为正式服务器。且,两台服务器都必须安装了jenkins。
注意2:这里所说的一键部署是指从测试服务器到正式服务器的发布功能。
提示:如果出现CLI调用的权限或者错误问题,参考:http://www.cnblogs.com/EasonJim/p/6086018.html
具体操作:
一、配置正式服务器的工程
选择构建项目时,选择【构建一个自由风格的软件项目】

1、解压工程:



命令行:
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。
2、还原工程:



命令行:

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)这里由于上面备份的压缩包是全路径的,所以我用字符串切割提取到盘符直接解压。
二、配置测试服务器的工程
1、一键部署工程:
选择构建项目时,选择【构建一个自由风格的软件项目】

1)配置工程信息:

2)配置批处理进行压缩:

说明:这里采用规则的命名方式,且最后会拷贝到workspace中,因为ftp上传软件只支持当前工作空间的目录。
批处理如下:

echo [INFO] 压缩要上传的文件,这里已经排除了一些文件
cd D:\wwwroot\nhq\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\nhq\wwwroot\
move %BUILD_ID%.push.rar %workspace%

3)配置FTP上传:

在【Name】上选择的server是需要手动进行配置的,如下:
安装插件【Publish Over FTP】
在【系统管理】->【系统设置】->【Publish over FTP】->点击【增加】按钮,增加一个要连接的FTP:

注意:
【Source files】表示的不是绝对路径,而是jenkins的workpase的路径,相当于相对路径,如果要上传整个目录包括子目录的,最后加上【\**】;
【Remove prefix】表示去除目录前缀,如果不去除,将会按照上面的目录依次创建。
【Remote directory】为ftp的存放目录,如果上面没有这个目录将会自动创建。
【Exclude files】为要排除的文件和文件夹,上面为参考。
4)配置CLI的调用服务:
注意:这里是直接调用正式服务器的cli服务。

批处理如下:
echo [INFO] 通过CLI调用公网Jenkins进行解包
java -jar "C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar" -s http://192.168.199.1:8080/ build Unzip -p FilePath=E:\wwwroot\inetpub\bak\%BUILD_ID%.push.rar -p UnzipPath=E:\wwwroot\inetpub\wwwroot\TestBank --username administrator --password administrator
参数说明参考上面的说明。
5)配置邮件发送:

触发点为无论结果如何都发送。

2、一键回滚工程:
选择构建项目时,选择【构建一个自由风格的软件项目】

1)配置工程信息:

2)配置构建选择参数:

提示:这里的Project就是上面配置的一键部署的工程,能自动识别到构建ID。
3)调用CLI进行生成环境的回滚:

批处理如下:

echo [INFO] 通过CLI调用公网Jenkins进行解包
Setlocal enabledelayedexpansion
set 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.169.199.1:8080/ build Restore -p FilePath=E:\wwwroot\inetpub\bak\%buildID%.push.rar.bak.rar -p UnzipPath=E:\wwwroot\inetpub\wwwroot\TestBank --username administrator --password administrator

提示:这里上面采用的批处理切割获取buildid,用于指定要回滚哪个版本。
4)配置邮件通知:

触发点:

到此,配置全部搞定。
Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)的更多相关文章
- Jenkins使用FTP进行一键部署及回滚(Windows)
前提条件: 1.必须有两台服务器,一个是生产环境,另一个是测试环境. 2.两台服务器上都必须安装了Jenkins. 3.其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:ht ...
- jenkins结合ansible用shell实现自动化部署和回滚
最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: cent ...
- PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版)
PHP 基于 Jenkins ansible 动态选择版本进行自动化部署与回滚(第二版) 先看流程图: 大概介绍一下: 版本选择使用jenkins 中的 git parameter 插件实现 回滚方式 ...
- 使用Jenkins结合Gogs和SonarQube对项目代码进行测试、部署、回滚,以及使用keepalived+haproxy调度至后端tomcat
0 环境说明 主tomcat:192.168.0.112 备tomcat:192.168.0.183 haproxy+keepalived-1:192.168.0.156 haproxy+keepal ...
- Jenkins 搭建企业实战案例 (发布与回滚)
让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins非常易于安装和配置,简单易用 ...
- 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚
1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...
- 在Azure DevOps Server(TFS系统)中部署回退/回滚方案(Rollback)
概述 Azure DevOps Server(之前名TFS)是微软公司实现软件研发.测试和部署一体化的全流程解决方案.在近几年的研发过程中,Azure DevOps Server 大幅增强了软件部署过 ...
- Jenkins:参数化构建:分支|模块|回滚|打印日志
@ 目录 多分支 安装Git Parameter Plug-In 配置参数 选择构建分支 分模块 前提 分模块build 参数配置 分模块shell脚本 mvn 的基本用法 分模块运行 Jenkins ...
- jenkins+docker+git+harbor构建及代码回滚(未完)
目录 一.部署 环境工作流程介绍 部署harbor 一.部署 前提环境说明 192.168.111.3 该机器为git本地仓库,及git远程仓库(git用户创建),及Harbor镜像仓库 192.16 ...
随机推荐
- python 读写三菱PLC数据,使用以太网读写Q系列,L系列,Fx系列的PLC数据
本文将使用一个gitHub开源的组件技术来读写三菱的plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...
- python实现树结构
树在计算机科学的许多领域中使用,包括操作系统,图形,数据库系统和计算机网络.树数据结构与他们的植物表亲有许多共同之处.树数据结构具有根,分支和叶.自然界中的树和计算机科学中的树之间的区别在于树数据结构 ...
- Java第三次作业--面向对象基础(封装)
Deadline: 2017-4-6 23:00 一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握简单类的设计 掌握利用对象引用建立类与类之间的联系 掌握this关键字 掌握static关键 ...
- 一台 linux 主机装两个mysql
启动 3306 nohup /usr/local/mysql5.1.7/bin/mysqld_safe & 启动 3307/usr/local/mysql/bin/mysqld --defau ...
- soql取第一件数据
User u = [select ID,Name from User Limit 1];
- 在Outlook中修改脱机文件(.ost)的保存位置
方法一 少读者所在公司的邮箱客户端都在使用微软 Exchange Server 的“缓存 Exchange 模式”.Outlook会默认将脱机文件(.ost文件)保存在C盘上. 但很多读者不希望Out ...
- 泰克 Tektronix THS720A 示波器 显示屏维修记录
THS720A 示波器 显示屏维护记录 打开后看到显示屏是 LM32P10 的型号,在网上找了一圈都要 1000 块左右. 看了一个规格书 Sharp 的,已经停产. 下一步看看有没有替代的.
- PHP安全性考虑
用户提交的数据 很多PHP 程序所存在的重大弱点并不是PHP 语言本身的问题,而是编程者的安全意识不高而导致的.因此,必须时时注意每一段代码可能存在的问题,去发现非正确数据提交时可能造成的影响. 例子 ...
- PSI分析
"SI是对多个TS流的描述,它包含了PSI" PSI只提供了单个TS流的信息,使接收机能够对单个TS流中的不同节目进行解码:但是,它不能提供多个TS流的相关业务,也不能提供节目的类 ...
- python3 关联规则Apriori代码模版
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from numpy import * def loadDataSet(): return [['a', ...