Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)
Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面开始搭建.net持续集成环境
Jenkins和SVN安装这里就不介绍了
一、准备工作
1、Jenkins中系统管理--》管理插件--》可选插件中找到MSBuild Plugin, 安装插件 MSBuild Plugin,用来对.net项目的自动编辑用
说明:配置过程中有些功能需要先安装一些插件,都可以去管理插件中查找并安装
2、配置MSBuild(系统管理--》Global Tool Configuration(全局工具配置)--》MSBuild安装)

参数填写说明:
MSBuild Name 只是一个名称可以随便填,但建议填有点意义的名称,例如:MSBuild_v4.0
Path to MSBuild 这个是安装MSBuild所在的路径,例如:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
这里的配置在后面构建(tab)操作中会用到
3、Jenkins Location 和 系统管理员邮件地址
系统管理--》系统设置 找到Jenkins Location
4、邮件通知配置(邮件的发送者信息)
邮件通知需要配置两个地方,一处是在 系统管理 -》系统设置 Extended E-mail Notification,
一处是在每个job项目配置中的 构建后操作Editable Email Notification节点配置:
需要先下载安装 Email Extension Plugin 插件
系统管理--》系统设置 找到 Extended E-mail Notification(此插件需要安装,图中的部分信息需要点击 高级 按钮才能显示)


上面的配置是邮件的发送者的163邮件信息,说明:
SMTP server(SMTP服务器) :登录163邮箱进行获取( 设置--》POP3/SMTP/IMAP)
User Name(用户名):登录发送者163邮箱的账号名称
Password(密码):登录发送者163邮箱的账号密码
Default Subject:构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS
Default Content:这里我使用下面自定义的内容格式
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 13pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称: ${PROJECT_NAME}</li>
<li>构建编号: 第${BUILD_NUMBER}次构建</li>
<li>SVN版本: ${SVN_REVISION}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url: <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录: <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url: <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
<li>构建原因: ${CAUSE}</li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">变更集</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>${JELLY_SCRIPT,template="html"}</td>
</tr>
</table>
</body>
</html>
登录163邮箱--》设置--》POP3/SMTP/IMAP
开启 服务POP3/SMTP/IMAP 设置客户端授权码
5、每个job项目 构建后操作 里面邮件通知的配置(配置邮件接收者的信息),进入配置:

点击右下角的 Advanced Settings 进入高级设置:

注意需要添加Triggers,没有添加Triggers就不会发送通知邮件出来,这是一个触发条件。
主要添加的Triggers有三类:Failure-Any,Success,Unstable (Test Failures),分别对应构建失败,构建成功,构建不稳定时触发发送邮件通知。
send to就是指发送给什么人,默认发送给Developers,也就是对这次构建有过修改动作的人,我一般会选择Recipient List,就是默认列表中添加的成员邮箱都会被发送通知邮件。

说明:
Recipient List :接收邮件的邮箱(如果有多个用英文逗号隔开)
Content :发送邮件的模板
二、现在开始进行搭建job
点击 新建

点击 OK 按钮后 进入一下页面,
这里我选择 参数化构建过程,添加参数(一个布尔值参数),名称自定义为:isAosDeploy,描述也自定义


点击 源代码管理(tab)--》选中Subversion,这里我使用SVN作为版本控制工具

添加登录SVN账号和密码

构建触发器(tab)此项是设置间隔多长时间去检查一次SVN的代码有没有变化,如果有变化则重新编译

说明:这里演示的例子安装的Jenkins和最终发布的IIS站点的服务器是同一台机器,因此是自动编译后在同机器上拷贝文件操作,相对简单些。如果是不同机器上或者网站是分布式部署到N个服务器上,那么就需要用FTP方式上传拷贝文件,那就需要安装插件 FTP publisher plugin 或者 Publish Over FTP,这两种插件使用方式不同,这种方式后续再介绍

说明:
MSBuilder Version 为之前配置的 "MSBuild_V4.0"
MSBuild Build File 是 JenkinsWorkplace 工作空间下的项目文件或者工程文件的名称
/t:Rebuild 表示每次都重建,不使用增量编译
/t:ResolveReferences;Compile /t:_CopyWebApplication
/p:Configuration=Release 表示编译Release版本
/property:TargetFrameworkVersion=v4.0 表示编译的目标是.NET 4.0
/p:WebProjectOutputDir=D:\JenkinsWorkplace\VueDEMO 表示网站发布文件的输出路径(本例没使用)
/p:OutputPath=D:\JenkinsWorkplace\VueDEMO\bin 表示网站发布dll的输出路径 (本例没使用)
/p:DeployOnBuild=true 表示启用编译并发布
/p:VisualStudioVersion=11.0 表示是VS2012
站点的文件拷贝命令
xcopy D:\JenkinsWorkplace\VueDEMO G:\JenkinsWeb\VueDEMO /s/e/y/exclude:C:\Users\VueDEMO\Desktop\exclude.txt
G:\JenkinsWeb\VueDEMO 拷贝文件到此目录下
/s 复制目录和子目录,除了空的。
/e 复制目录和子目录,包括空的。
/y 禁止提示以确认改写一个现存目标文件(如果文件存在则覆盖)。
exclude:C:\Users\VueDEMO\Desktop\exclude.txt
/exclude 指定含有字符串的文件列表。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。例如,指定如 \obj\ 或 .obj 的将会排除目录 obj 下面的所有文件或带有.obj 扩展名的文件。
exclude.txt文档是排除文件或者目录,如果有排除多种类型的文件或者目录,则用户换行分割,如本实例中
排除 .pdb后缀的文件,和 web.config 文件,obj 文件夹,等等




四、手动安装的插件如下
五、Jenkins FTP 上传文件(自动部署到网站服务器IIS)
下面分两种方式介绍:
第一种:使用 FTP publisher plugin 插件
第一步:系统管理--》系统设置 找到 FTP repository hosts,新增一个,编辑好,保存
Timeout(ms): 超时时间(毫秒)
第二步:打开Job项目配置
增加构建后操作步骤,选择 Publish artifacts to FTP
第二种:使用 Publish Over FTP Plugin 插件
第一步:系统管理--》系统设置 找到 Publish over FTP,新增一个,编辑好,保存
Timeout(ms): 超时时间(毫秒)
Use active data mode: (未选中)默认选项使用PASV(被动模式),选中使用PORT (主动模式)
Don't make nested dirs:不创建下级目录(具体的自己看帮助)
第二步:打开Job项目配置
在项目配置中,可以从下面两个地方找到此插件的配置。
构建步骤:Send Files over FTP
构建后操作:Send build artifacts over FTP
增加构建步骤,选择 Send files over FTP


Exclude files:排除的文件(在你传输目录的时候很有用,使用通配符,例如:**/*.log, **/*.tmp, VueDEMO/obj/**)
Pattern separator:分隔符(配置Exclude files和Source files的分隔符。如果你这儿更改了,上面的内容也需要更改)
No default excludes:禁止默认的排除规则(具体的自己看帮助)
Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。(个人理解)
Flatten files:只在ftp上建立文件,不创建目录(除了远程目录)
Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式),具体格式参考下表:
|
Remote directory |
Directories created |
|
'qa-approved/'yyyyMMddHHmmss |
qa-approved/20101107154555 |
|
'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}' |
builds/2010/11/07/build-456 (if the build was number 456) |
|
yyyy_MM/'build'-EEE-d-HHmmss |
2010_11/build-Sun-7-154555 |
|
yyyy-MM-dd_HH-mm-ss |
2010-11-07_15-45-55 |
Clean remote:上传前会删除远程目录中的所有的文件(血的教训啊,测试的时候用的是运营小组的ftp,然后一不小心就把他们的数据删除了,害的我去做数据恢复。)
ASCII mode:文件传输的方式,一般默认不选。
增加构建后操作步骤,选择 Send build artifacts over FTP
配置方式同上

Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)的更多相关文章
- 使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境
使用jenkins+calabash+cocoapods搭建ios持续集成环境 持续集成 持续集成到底是什么呢?依据敏捷大师Martin Fowler的定义: 持续集成是一种软件开发实践. 在持续集成 ...
- 使用VSTS/TFS搭建iOS持续集成环境
TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...
- Jenkins+GitHub+Xcode+fir搭了一个持续集成环境
enkins+GitHub+Xcode+fir搭了一个持续集成环境 字数826 阅读5699 评论44 喜欢49 原文链接 Coding Duck 今天用Jenkins+GitHub+Xcode+fi ...
- 持续集成环境--Tomcat热部署导致线程泄漏
一.问题由来 我们组用jenkins部署了持续集成环境,(jenkins部署war包到远程服务器的tomcat). 每次提交了代码,jenkins上一键构建,就可以自动拉取最新代码,打war包,热部署 ...
- [Docker][ansible-playbook]3 持续集成环境之分布式部署
预计阅读时间: 30分钟 本期解决痛点如下:1. 代码版本的多样性,编译环境的多样性如何解决?答案是使用docker,将不同的编译环境images统统打包到私有仓库上,根据需求进行下载,从宿主机上挂载 ...
- JavaWeb+SVN+Maven+Tomcat +jenkins搭建持续集成环境和自动部署
https://blog.csdn.net/wh52788/article/details/80900477 https://blog.csdn.net/liyong1028826685/articl ...
- Jenkins实现SVN+Maven+Java项目的持续集成
Jenkins 2.46.1 Centos 7.3 JDK 7 安装jdk/maven/svn 在Jenkins所在的Linux机器安装jdk和maven,步骤就不说了,下面是环境变量: export ...
- jenkins下搭建c++持续集成环境
运行环境为centos 5.8 1.下载tomcat,并解压 2.下载jenkins,把jenkins.war放到tomcat的webapp目录下 3.在tomcat的bin目录下执行./star ...
- [ansible-playbook]4 持续集成环境之分布式部署利器 ansible playbook学习
3 ansible-play讲的中太少了,今天稍微深入学习一点 预计阅读时间:15分钟 一: 安装部署 参考 http://getansible.com/begin/an_zhuang_ansile ...
随机推荐
- [Luogu] 封锁阳光大学
https://www.luogu.org/problemnew/show/P1330 #include <cstdio> #include <cstring> #includ ...
- 学习C/C++的简单方法
如何学习C++呢.C和C++是很多专业的必修课,尤其对计算机专业来说,更是重中之重.C++语言是早期发展的高级语言,具备执行速度快,语法优美等特点.是底层高效率系统的首选开发语言.今天就和大家分享一下 ...
- 小程序demo项目实践
今天开始做一个简单的小程序,做的过程中势必会有一些知识经验需要记录 项目初始化 首先创建好一个小程序项目,在app.wxss里面将自带的css样式统统去除,加上自己写的初始化样式 小程序目前不支持*号 ...
- 设计一个树型目录结构的文件系统,其根目录为 root,各分支可以是目录,也可以是文件,最后的叶子都是文件。
设计一个树型目录结构的文件系统,其根目录为 root,各分支可以是目录,也可以是文件,最后的叶子都是文件. 我实现的功能是提供父目录(兄弟目录),输入文件名,创建树型目录结构,文本文件不可以再有子目录 ...
- 【java8新特性】日期和时间
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript ...
- [ZJOI2004]嗅探器 (割点)
这题就比较好玩吧水题 以数据范围来看随便怎么做就能过 \(O(n)\)显然我们得过一个割点,其次这个割点得在\(x-y\)中间且不为始终点 其他都好说,在中间:从\(x\)开始遍历,首先得保证\(x- ...
- Java基本的线程操作(附代码)
啦啦啦啦,从头整理一遍java并发的内容.开始是基本的线程操作 线程状态切换: 新建线程: @Test public void newTread(){ Thread t1 = new Thread(n ...
- mysql 导入导出表结构和表数据
mysqldump -u用户名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据mysqldump -h localhost -uroot -p123456 databas ...
- Flask上下文源码分析(二)
前面第一篇主要记录了Flask框架,从http请求发起,到返回响应,发生在server和app直接的过程. 里面有说到,Flask框架有设计了两种上下文,即应用上下文和请求上下文 官方文档里是说先理解 ...
- IntelliJ IDEA 2017.3 配置Tomcat运行web项目教程(多图)
小白一枚,借鉴了好多人的博客,然后自己总结了一些图,尽量的详细.在配置的过程中,有许多疑问.如果读者看到后能给我解答的,请留言.Idea请各位自己安装好,还需要安装Maven和Tomcat,各自配置好 ...