Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

转载:http://www.cnblogs.com/EasonJim/p/6295372.html

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\wwwrootcall 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\wwwrootmove %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)配置邮件通知:

查看原图

触发点:

查看原图

到此,配置全部搞定。

时间: 2024-10-14 00:07:55

Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)的相关文章

Jenkins使用FTP进行一键部署及回滚(Windows)

前提条件: 1.必须有两台服务器,一个是生产环境,另一个是测试环境. 2.两台服务器上都必须安装了Jenkins. 3.其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:http://www.cnblogs.com/EasonJim/p/6086018.html). 具体实现步骤: 1.在生产环境的Jenkins配置一个解压操作的工程用于部署和一个还原工程用于回滚 解压: 命令行: echo [INFO] 备份压缩操作 call C:\"Program Files&qu

jenkins结合ansible用shell实现自动化部署和回滚

最近用jenkins+gitlab+ansible做持续化集成,自动化部署和版本回滚.然而deploy plugin没能做到增量升级和回滚操作,折腾了很久决定自己写个脚本来简单实现. 环境: centos 7.0 64位 gitlab:v2.9.0 git:2.9 jenkins 1.651.3.git plugin.GitLab Plugin.Dynamic Parameter Plug-in等 ansible:2.1.0.0 各工具职能: 1.gitlab做版本管理 2.jenkins根据指

使用docker实现半自动化代码自动部署与回滚

最近开发docker的caas平台,目前已经开发完成,在优化性能与套模板.对于docker最近是很好,很多人把docker做为vm来使用,当然作为测试来说是没问题,但我感觉docker本身在做沙箱.自动化部署与回滚方面更适合,下面介绍一下我这里是如何通过docker实现代码半自动化部署. 目前我这里已经实现能结合svn或者git代码库,对node.php.java代码进行半自动化部署,先给大家截图看效果,感觉满意在继续细看. 总界面如下 点击左上角的"新增开放项目"就可以新建立测试,下

Jenkins与gitlib实现自动化部署2

新建发布项目:实现构建时触发脚本执行分批次上线 vim /etc/sudoers 授权 #Defaults requiretty 不能开启tty端 www ALL=(ALL) ALL jenkins ALL=(ALL) NOPASSWD: /usr/bin/ssh su - www 切换用户 ssh-copy-id [email protected] 设置web和jenkins的基于key的认证 ssh-copy-id [email protected] cat .ssh/id_rsa.pub

Jenkins与Gitlib实现自动化部署与持续构建

持续部署之jenkins与gitlab(一) 主要部分 安装部署Jenkins和gitlib 了解gitlib的常用命令 部署haproxy与tomcat环境 配置Jenkins使用gitlib更新代码 通过sonar实现代码检测 实现gitlib触发Jenkins自动部署 通过Jenkins实现自动部署 实现haproxy动态添加删除后端服务器 编写脚本实现自动化部署与回滚 持续集成的分类: 持续集成:持续集成是指程序员在代码的开发工程中,可以频繁的将代码部署到主干上,并进行自动化测试 持续交

单一工作流的执行?回滚框架初步想法(基于事件驱动模式)

思路来源: 事件驱动框架. Part 1. 定义一个框架 event_flow.py  (需要再改动) 1 #! /usr/bin/env python 2 3 4 deploy_phase_list = [] 5 6 def deploy(): 7 for phase in deploy_phase_list: 8 phase_obj = phase() 9 phase_obj.deploy() 10 11 12 def rollback(): 13 for phase in reversed

Jenkins测试环境到生产环境的一键部署策略(Windows)

Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言 前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟迟没有推进.其原因主要在以下几个方面: 尚未实现部署之前的自动化备份 尚未实现部署出现问题后的自动化回滚 由于之前采用FTP上传部署需要生产环境开放FTP端口存在安全性问题且FTP会因为各种的网速问题,导致站点瞬间挂掉 只要解决以上三个问题,我们就可以初步实现生产环境的自动化部署. 二.实现思路 利用Jen

jenkins实现生产环境部署文件的回滚操作

由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一键从测试环境发布到正式环境的工具,部署的大致思路如下(详细的操作点这里,有详细节点配置和部署配置): 前提:安装jenkins的环境为master,每一个生产环境为slave,slave是实时连接到master的. 1.测试环境上使用了CCNET进行每次的代码变更编译部署,在测试环境上进行编译的版本

Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(四):发布与回滚

写在前面 我们以前windows跑.net Framework程序的时候,发布,自己乖乖的替换程序:备份,也是自己一个一个的重命名备份:回滚,发布遇到问题的回滚更是不用说了:运维很是怕我们 这些用windows的啊: 那全面拥抱linux的一一.net core 时代 ,是如何处理这些个问题的呢? 噔噔蹬蹬~请往下看. 运行环境 centos:7.2 cpu:1核 2G内存 1M带宽 Jenkins ver. 2.150.1 一台安装jenkins的机器. (本文例子不一定要安装jenkins,