继上一篇文章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. Azure Active Directory Connect是如何协助管理员工作的?

    TechTarget中国原创] 应用基于云的Microsoft Azure Active Directory,管理员们可以将本地Active Directory整合到Windows Server中.通 ...

  2. Python抓取视频内容

    Python抓取视频内容 Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具 ...

  3. 纯js国际化(i18n)

    i18n,是internationalization单词的简写,中间18个字符略去,简称i18n,意图就是实现国际化,方便产品在不同的场景下使用 目标:可以点击切换语言或者ChangeLanguage ...

  4. day02_05.除数与被除数

    第5题 除数与被除数 编程需要一定数学能力,在这看看你找到了几个有用条件, 又该如何来运用他们呢? 学习是互通的 题目:两个自然数相除,商3余10,被除数,除数,商,余数的和是163,求被除数,除数. ...

  5. selenium随笔

    1.点击一个连接通常录制一个click命令,通常需要改变它到clickAndWait命令,确保案例暂停,新的页面完全被转载进来. 2.测试案例需要检查Web页的属性,需要assert和verify命令 ...

  6. Java学习之字符串类

    String在Java中是一个类类型(非主类型),是一个不可被继承的final类,而且字符串对象是一个不可变对象.声明的String对象应该被分配到堆中,声明的变量名应该持有的是String对象的引用 ...

  7. python 打印9*9乘法表

    # -*- coding: utf8 -*- # Author:wxq 1. for i in range(1,10): for j in range(1,i+1): print "%d*% ...

  8. leetcode NO.7 反转整数 (python实现)

    来源 https://leetcode-cn.com/problems/reverse-integer/description/ 题目描述 给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 ...

  9. Spring Cloud 目录

    Spring Cloud Eureka Spring Cloud Config Spring Cloud Feign Spring Cloud Hystrix Spring Cloud Ribbon ...

  10. nyoj 325

    zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...