• 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"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。

    2、还原工程:

    命令行:

    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)这里由于上面备份的压缩包是全路径的,所以我用字符串切割提取到盘符直接解压。

    二、配置测试服务器的工程

    1、一键部署工程:

    选择构建项目时,选择【构建一个自由风格的软件项目】

    1)配置工程信息:

     

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

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

    批处理如下:

    echo [INFO] 压缩要上传的文件,这里已经排除了一些文件
    cd D:wwwroot
    hqwwwroot
    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
    hqwwwroot
    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)JenkinswarWEB-INFjenkins-cli.jar" -s http://192.168.199.1:8080/ build Unzip -p FilePath=E:wwwrootinetpubak\%BUILD_ID%.push.rar -p UnzipPath=E:wwwrootinetpubwwwrootTestBank --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)JenkinswarWEB-INFjenkins-cli.jar" -s http://192.169.199.1:8080/ build Restore -p FilePath=E:wwwrootinetpubak\%buildID%.push.rar.bak.rar -p UnzipPath=E:wwwrootinetpubwwwrootTestBank --username administrator --password administrator

    提示:这里上面采用的批处理切割获取buildid,用于指定要回滚哪个版本。

    4)配置邮件通知:

    触发点:

     到此,配置全部搞定。

  • 相关阅读:
    (转)用Ajax技术让IE Web Control Tree View实现大数据量读取
    您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序
    oracle数据库中ORA28000: the account is locked问题
    C#动态生成html页面
    oracle 用户权限解释
    HCPC2013校赛训练赛 2
    ZOJ2770 Burn the Linked Camp 差分约束
    POJ2570 Fiber Network 状态压缩+floyd
    ZOJ3088 Easter Holidays 最短路
    POJ1364 King 差分约束
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6295372.html
Copyright © 2020-2023  润新知