• Jenkins配置MSBuild实现自动部署2(项目实践)


    继上一篇文章http://www.cnblogs.com/EasonJim/p/6077225.html,大致实现的思路,今天来记录一个真实项目实践。

    一、新建项目

    选择【构建一个自由风格的软件项目】,其余的不要去选择。

    二、项目配置

    1、项目名称

    2、SVN迁出代码配置

    注意:如果时git就配置相应的git操作

    说明:

    【Credentials】为svn的账号密码,通过【Add】按钮进行配置。如下:

    Local module directory】这个路径时源代码迁出时存放的路径,切记,这里的路径时相对路径,相对于jenkins的workspace的路径,而不能时绝对路径。

    其余都按照上面进行配置,主要实现了都有更新时自动迁出源代码的功能,并触发下一步的构建流程。

    3、配置构建触发器

    这里的触发器时定时去查看svn是否有更新,有则进行下一步构建流程。

    上面我配置的时每分钟进行svn的检查,如果想要不同的配置时间,点击后面的问号进行查看。

    4、构建前批处理删除工作空间文件夹

    注意:这一步可选操作,由于我的项目特殊原因,所以需要每次在构建前先清空文件夹的内容

    批处理如下:

    echo [INFO] 清除编译后输出的文件
    mkdir %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web
    del /F /S /Q %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web
    cd %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web
    rd /S /Q %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web

    5、配置MSBuild进行项目编译

     

    说明:

    【MSBuild Version】是需要自己手动去配置的,配置方法如下:

    【系统管理】->【Global Tool Configuration】->【MSBuild】,点击【新增MSBuild】进行版本的添加,如下:

    【MSBuild Build File】为Web工程的绝对路径,但是可以使用环境变量,即jenkins的工作空间%workspace%进行定义,也就是上面svn迁出代码存放的路径。

    【Command Line Arguments】为MSBuild的命令行运行参数,这里我定义了程序使用Release版本,并配置了输出路径,脚本如下:

    /p:OutputPath=%workspace%BuildOutProjectShop1.1.0.123_Test;Configuration=Release 

    同样,这里的输出路径只能是绝对路径,不过可以使用环境变量去定义。

    详细的MSBuild参数列表,参考:https://msdn.microsoft.com/zh-cn/library/ms164311.aspx

    6、构建完成后清理不要的文件

    这一步是可选操作,比如我编译输出时,web.config这些文件我是不需要上传到测试站点的

    命令如下:

    echo [INFO] 删除编译后不需要上传的文件
    del /F /Q /S %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Webin*.pdb
    del /F /Q /S %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Webin*.xml
    del /F /Q /S %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web*.pdb
    del /F /Q /S %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Webpackages.config
    del /F /Q /S %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.WebWeb*.config
    
    rd /S /Q %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.WebAreasCMS

    提示:这个脚本里面包括了清楚文件和文件夹的。

    7、进行压包

    这一步可选,可以直接是跳到FTP进行每个文件上传,或者使用xcop进行复制。

    批处理如下:

    echo [INFO] 压缩要上传的文件
    cd %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web
    call C:"Program Files"WinRARRar.exe a -k -r -s -m1 -agYYYYMMDD-NN{-Upload-%BUILD_ID%} %workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web

     提示:这里的文件命名采用了有规律的命名方式。

    8、配置ftp上传

     

    在【Name】上选择的server是需要手动进行配置的,如下:

    安装插件【Publish Over FTP

    在【系统管理】->【系统设置】->【Publish over FTP】->点击【增加】按钮,增加一个要连接的FTP:

    注意:

    【Source files】表示的不是绝对路径,而是jenkins的workpase的路径,相当于相对路径,如果要上传整个目录包括子目录的,最后加上【**】;

    BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web*-Upload-*.rar 

    【Remove prefix】表示去除目录前缀,如果不去除,将会按照上面的目录依次创建。

    BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web

    【Remote directory】为ftp的存放目录,如果上面没有这个目录将会自动创建。

    wwwrootak

    【Exclude files】为要排除的文件和文件夹,上面为参考。

    提示:ftp上传文件时多一点使用通配符,比如要上传1uplad2016.rar文件,可以使用*upload*.rar这样的通配符,而目录后面**,这样代表包括子目录任何文件。

    9、上传完成后调用远程cli进行解压

    前提:远程服务器必须配置了部署的工程,参考:http://www.cnblogs.com/EasonJim/p/6086168.html

    如果不是压包上传,上面ftp那一步就已经结束了。

    批处理如下:

    echo [INFO] 通过CLI调用公网Jenkins进行解包
    set "fileName="
    for %%a in (%workspace%BuildOutProjectShop1.1.0.123_Test\_PublishedWebsitesJsoft.Web*-Upload-*.rar) do (
     set "fileName=%%~nxa"
    )
    java -jar "C:Program Files (x86)JenkinswarWEB-INFjenkins-cli.jar" -s http://192.168.199.2:8081/ build Unzip -p FilePath=d:wwwrootwwwrootak\%fileName% -p UnzipPath=d:wwwrootwwwrootwwwroot --username administrator --password administrator

    提示:上面是通过批处理进行文件的查找,查找到打包的文件,然后通过远程cli进行调用。

    提示2:cli在调用时在windows上会因为权限问题而限制,需要进行特殊设置,参考:http://www.cnblogs.com/EasonJim/p/6086018.html

    10、邮件发送配置

    提示:采用的是邮件扩展插件配置,参考:http://www.cnblogs.com/EasonJim/p/6068002.html

    提示:附带上构建日志到邮件中。

    这里选择所有情况都发送。

    到此,整个项目实战完成。

  • 相关阅读:
    QQ恢复解散后的群聊或删除后的好友的方法
    微软双屏手机Surface Duo曝新料
    利用Travis CI+GitHub实现持续集成和自动部署
    利用echarts展示旅行足迹
    03_K近邻算法
    02_感知机算法
    《面试官之你说我听》:简明的图解Redis RDB持久化、AOF持久化
    【绝对有收获】看看?必须告诉你为什么要使用MQ消息中间件(图解版)
    推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)
    利用window.performance.timing进行性能分析
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6293334.html
Copyright © 2020-2023  润新知