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


    前提条件:

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

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

    3、其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:http://www.cnblogs.com/EasonJim/p/6086018.html)。

    4、jenkins-cli.jar文件放在"JenkinswarWEB-INFjenkins-cli.jar"。

    5、思路参考:http://www.cnblogs.com/EasonJim/p/6086168.html

    实现思路:

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

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

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

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

    具体实现步骤:

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

    解压:

    命令行:

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

    说明:

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

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

    还原:

    命令行:

    echo [INFO] 备份压缩操作
    call C:"Program Files"WinRARRar.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
    ar.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"WinRARRar.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)JenkinswarWEB-INFjenkins-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 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)JenkinswarWEB-INFjenkins-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的形式。

  • 相关阅读:
    【转】Storm并行度详解
    Storm 集群安装配置
    【原】storm源码之storm代码结构【译】
    Storm中-Worker Executor Task的关系
    Storm源码分析--Nimbus-data
    storm配置
    Nimbus<三>Storm源码分析--Nimbus启动过程
    Nimbus<二>storm启动nimbus源码分析-nimbus.clj
    Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
    linux 相关学习记录
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6092938.html
Copyright © 2020-2023  润新知