设为首页 收藏本站
查看: 1172|回复: 0

[经验分享] Jenkins配置MSBuild实现自动部署2(项目实践)

[复制链接]

尚未签到

发表于 2018-1-8 23:23:22 | 显示全部楼层 |阅读模式
  继上一篇文章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%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\  
del /F /S /Q %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
  
cd %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
  
rd /S /Q %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.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%\BuildOutProject\Shop\1.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%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\bin\*.pdb  

del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\bin\*.xml  

del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\*.pdb  

del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\packages.config  

del /F /Q /S %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\Web*.config  

  

rd /S /Q %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\Areas\CMS\  

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

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

  批处理如下:
  

echo [INFO] 压缩要上传的文件  

cd %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\  
call C:\"Program Files"\WinRAR\Rar.exe a -k -r -s -m1 -agYYYYMMDD-NN{-Upload-%BUILD_ID%} %workspace%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\
  

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

8、配置ftp上传

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

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

BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\*-Upload-*.rar   

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

BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\  

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

wwwroot\bak  

  【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%\BuildOutProject\Shop\1.1.0.123_Test\_PublishedWebsites\Jsoft.Web\*-Upload-*.rar) do (
  
set "fileName=%%~nxa"
  
)
  
java -jar "C:\Program Files (x86)\Jenkins\war\WEB-INF\jenkins-cli.jar" -s http://192.168.199.2:8081/ build Unzip -p FilePath=d:\wwwroot\wwwroot\bak\%fileName% -p UnzipPath=d:\wwwroot\wwwroot\wwwroot --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


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

  这里选择所有情况都发送。
  到此,整个项目实战完成。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433102-1-1.html 上篇帖子: 持续集成之Jenkins(坏老头) 下篇帖子: Jenkins pipeline:pipeline 使用之语法详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表