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的代码有没有变化,如果有变化则重新编译

构建环境(tab) 未研究此项配置有何作用,使用默认的,不做任何修改

构建(tab) 此项设置自动编译方式、并将编译后的站点文件拷贝到服务器IIS的站点目录下,
注意这步很重要,如果不配置这步那么只能完成项目的构建操作,而并没有将构建后的 JenkinsWorkplace 工作空间下的项目进行自动编译并自动部署发布到服务端IIS上

完成此步操作需要先去安装插件 MSBuild Plugin
 

说明:这里演示的例子安装的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

D:\JenkinsWorkplace\VueDEMO 要拷贝的文件目录

G:\JenkinsWeb\VueDEMO 拷贝文件到此目录下

/s 复制目录和子目录,除了空的。

/e 复制目录和子目录,包括空的。

/y 禁止提示以确认改写一个现存目标文件(如果文件存在则覆盖)。

exclude:C:\Users\VueDEMO\Desktop\exclude.txt

/exclude 指定含有字符串的文件列表。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。例如,指定如 \obj\ 或 .obj 的将会排除目录 obj 下面的所有文件或带有.obj 扩展名的文件。

exclude.txt文档是排除文件或者目录,如果有排除多种类型的文件或者目录,则用户换行分割,如本实例中

 

排除 .pdb后缀的文件,和 web.config 文件,obj 文件夹,等等

构建后操作(tab) 此项主要是配置邮件通知 将编译情况发送给开发者,前面已经介绍过
 
到此已经job配置完成,下面来看看 构建结果
由于构建记录太长了,这里我只截取关键部分展示出来

三、账号权限设置

系统管理--》全局安全配置 

四、手动安装的插件如下

MSBuild Plugin

Build Timeout

Email Extension Plugin

Publish Over FTP

FTP publisher plugin

五、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

配置方式同上

转载于:https://www.cnblogs.com/li150dan/p/9523458.html

Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)相关推荐

  1. Jenkins+Svn搭建持续集成环境和自动部署

    Jenkins+Svn搭建持续集成环境和自动部署 一.环境说明 centos 6.8     ip:192.168.1.26 二.运行环境配置 1.安装java环境,下载jdk并放在/usr/loca ...

  2. 在CentOS7上安装Drone搭建CI持续集成环境

    文章目录 在CentOS7上安装Drone搭建CI持续集成环境 前言 安装前规划 安装过程 配置域名解析 安装Docker 拉取Drone Server镜像 添加GitHub OAuth Applic ...

  3. Jenkins 搭建C++持续集成环境

    简介 本文主要介绍如何通过 Jenkins 搭建 C++的持续集成环境.最后达到的效果是每天00:00 - 08:00之间构建.测试和打包一次工程. 开发环境为 VS2015,测试工具为 CppUni ...

  4. Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程

    服务器系统 centOS 8.2 1. 运行环境安装 1.1 安装 jdk 上传安装包,然后解压 [root@ianly ~]# tar -zxvf jdk-8u144-linux-x64.tar.g ...

  5. Jenkins+GitHub+Xcode+fir搭了一个持续集成环境

    本文已迁移到 xuanyiliu.com BTW 我自己已经把项目从Jenkins迁移到了BuddyBuild上,如果你只有一个项目,公司不限制或是个人项目,完全可以用BB来代替,BB配置很简单,按步 ...

  6. Jenkins实现SVN+Maven+Java项目的持续集成

    Jenkins 2.46.1 Centos 7.3 JDK 7 安装jdk/maven/svn 在Jenkins所在的Linux机器安装jdk和maven,步骤就不说了,下面是环境变量: export ...

  7. jenkins下搭建c++持续集成环境

    运行环境为centos 5.8 1.下载tomcat,并解压 2.下载jenkins,把jenkins.war放到tomcat的webapp目录下 3.在tomcat的bin目录下执行./startu ...

  8. 持续集成部署Jenkins工作笔记0017---17.整合GitHub的持续集成环境要点说明

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152

  9. Jenkins+Maven+SVN快速搭建持续集成环境

    Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面看看我们是如何几分钟就快速搭建一个持续集成环境吧. 假设我们目前已经有2个maven项目:entities(J ...

  10. 构建基于Jenkins + Github的持续集成环境

    登录 | 注册 John_cdy的专栏 学无止境 目录视图 摘要视图 订阅 有奖征资源,博文分享有内涵 6月推荐文章汇总 CSDN博文大赛初赛晋级名单公布 关注CSDN社区微信,福利多多 构建基于Je ...

最新文章

  1. HDU 3306 Another kind of Fibonacci 矩阵快速幂
  2. 用 float 存储金额,老板说损失从工资里扣!
  3. 月薪3000到年薪30万,你可知“千里之行始于Python”?
  4. 如何用java输出方格_第三章 Java类基础知识作业之(输出5*5数字方格,打印星塔)...
  5. Java基础--多态
  6. python将py文件编译成二进制文件 加密
  7. webmagic框架
  8. 一个基于DataTable的后台框架的实现
  9. 鸡啄米vc++2010系列15(消息对话框)
  10. Linux基础知识全面总结
  11. 微信朋友圈装x代码_微信朋友圈超强装X,电影台词长截图,一键搞定
  12. 迅雷下载Android Studio最新版本(Android Studio 2.1.2.0)
  13. win10cmd计算机管理界面,win10系统如何CMD中进行电脑关机/重启
  14. 针式打印机偏移测试软件,精打教程(3)打印机打印偏移设置
  15. SQL Server基础操作(此随笔仅作为本人学习进度记录五 !--数据类型)
  16. nvcc编译器之编译选项(chapter 4)
  17. 移动web——微金所实战项目
  18. 【Neuralink 与大脑的神奇未来】Part 4:Neuralink 的挑战
  19. 新视野大学英语(第三版)第二册课后翻译
  20. 51nod3061 车

热门文章

  1. mac os虚拟机镜像_为旧型Mac电脑配置支持OS 9的网络启动
  2. bigru参数计算_用飞桨做命名实体识别,手把手教你实现经典模型 BiGRU + CRF
  3. linux ls -l 日期乱码,请教-关于ls-l的日期显示问题
  4. js 改变change方法_JS获取和设置元素的属性以及属性值
  5. MAVEN插件打包SNAPSHOT包MANIFEST.MF中Class-Path带时间戳的问题
  6. lintcode:1-10题
  7. struts的体系结构
  8. 杂谈(13)第二期办公技能交流分享活动深层次总结
  9. myecplise 完全开发
  10. 玩玩AJAX之使用ashx文件响应来自JQuery的JSON请求.