继上一篇文章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

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

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

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

Jenkins配置MSBuild实现自动部署2(项目实践)的更多相关文章

  1. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...

  2. Jenkins配置MSBuild编译.net4.6的项目

    经过测试,如果用原始的msbuild,会出现语法无法识别的问题,"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe&qu ...

  3. Jenkins自动部署Tomcat项目

    Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:

  4. docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  5. 自动部署Springboot项目脚本小脚本

    #!/bin/bash echo '自动部署Springboot项目脚本...' # aaa.jar 项目jar包 pid=`ps -ef|grep aaa.jar|grep -v grep|grep ...

  6. SpringBoot:使用Jenkins自动部署SpringBoot项目(二)具体配置

    1.启动Jenkins 在浏览器输入ip:port后,进入Jenkins初始化界面,需要查看文件,得到密码. 输入密码进入初始化界面,选择推荐插件安装. 安装完成创建账号,进入Jenkins主界面. ...

  7. Jenkins+Maven+SVN搭建自动部署、自动测试环境

    .打开http://10.3.15.78:8080/jenkins/,第一次进入里面没有数据,我们需要创建job,我们这有2个项目,需要创建2个job.http://10.3.34.163:9890/ ...

  8. gitblit git SERVER window 安装配置 hook post-receive 自动部署

    项目中使用的是gitblit windos版 1.安装 需要JAVA SDK http://gitblit.com/Download Gitblit GO (Windows) 下载后,解压缩,放到例如 ...

  9. 使用 JS 开发 Github Actions 实现自动部署前后台项目到自己服务器

    不想看前面这么多废话的可以直接跳到具体实现 Github Actions 是什么? 说到 Github Actions 不得不提一下. 持续集成(continuous integration):高质量 ...

随机推荐

  1. Contest1893 - 2019年6月多校联训b层测试1

    传送门 密码:waxadyt T1 暴力 对于任意相邻的两个值 中间能到达的最大高度是固定的 加上头尾,判一下就好了 代码//感谢Th Au K #include<bits/stdc++.h&g ...

  2. java多线程的常用方法

    介绍一些多线程中的常用方法: //启动方法 a.start(); //返回代码正在被哪个线程调用的信息 a.currentThread(); //返回线程的名字 a.currentThread().g ...

  3. day10 消息队列,多进程和多线程以及协程,异步IO,事件驱动等

    回顾一下线程和进程 线程与进程的区别 守护线程: 队列: 两种方式: 先进先出  # 后入先出   #卖水果,后来的来的是新的 生产者消费者模型: 生产包子, 吃包子 事件 event: 红绿灯模型 ...

  4. 虚拟架构就绪 | 谈谈Windows Server 2012 R2迁移这件小事

    我们所说的“新选择”包括操作系统升级——告别Windows Server 2003或2008,选择用什么样的姿势进行升级呢? 新年伊始,正是企业对自身IT基础设施进行评估的最佳时期.在多项评估项目里面 ...

  5. 实用拜占庭容错算法PBFT

    实用拜占庭容错算法PBFT 实用拜占庭容错算法PBFT 96 乔延宏 2017.06.19 22:58* 字数 1699 阅读 4972评论 0喜欢 11 分布式架构遭遇的问题 分布式架构会遭遇到以下 ...

  6. [oldboy-django][2深入django]ORM操作

    推荐学习博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html 需求: 汇总django orm操作,代替原生mysql语句来操作数据库:里面内 ...

  7. git 远程仓库回滚

    git branch backup #创建备份分支 git push origin backup:backup #push到远程 git reset --hard commit_id #本地分支回滚 ...

  8. [HAOI2010][bzoj2424] 订货 [费用流]

    题面 传送门 思路 这题其实挺水的......做过餐巾计划问题就能明白,是同一个道理 首先,显然刚刚好满足每一个月的需求,会得到最优解(废话-_-||) 然后我们发现,货物在不同的月之间的转移,可以比 ...

  9. Origin 2018 的坐标轴中文标签发生倒立/翻转

    问题: 在使用 origin 2018 作图时,坐标轴或者是标签中输入中文后,将其更换中文字体(英文字体没有该问题)后发生倒立的情况 解决: 后来发现 Origin 2018 中存在两种中文字体,其中 ...

  10. bat文件【java调用】

    Runtime.getRuntime().exec("cmd /c del c:\\a.doc");   //Runtime.getRuntime().exec("not ...