Jenkins搭建.NET自动编译发布本地环境
最近在做一个团队项目的时候,用到了自动编译发布部署环境【也可以说是持续集成】,于是顺便学习了下这个环境的搭建过程。
持续集成
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
1、持续集成系统的组成
一个完整的构建系统必须包括:
1) 一个自动构建过程,包括自动编译、分发、部署和测试等。
2) 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。
3) 一个持续集成服务器。
其中1)自动构建和2)代码存储库,都是有相应的软件配合,开发人员需要的学习成本不高,复杂在各模块的相互配合,这一期间可能需要大量时间去调试。一旦调试完毕,对于之后工作效率的提升是成倍的。
2、MSBuild
自动构建,做.Net开发的同仁相信大多数都会使用VS,而Visual Studio用MSBuild构建.NET项目。
MSBuild所需的仅仅是一个脚本,在脚本中指定要执行的target;项目中的.csproj和.vbproj 文件都是MSBuild脚本。当编写好MSBuild脚本后,只需要一条简单的命令,即可实现代码的编译与测试工作。
虽然MSBuild实现了自动编译与测试,但是在调用MSBuild时,我们还是通过输入命令进行调用的,这里掺杂了人工干预的成分,因此要将这部分工作剔除。
3、版本管理
目前主流的版本管理有传统的SVN、分布式的Git和Mercurail各有利弊,自行选择。
4、Jenkins
Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。
同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。下面将介绍 Jenkins 的安装与配置。
Jenkins安装配置
Jenkins是一个可扩展的持续集成的引擎,主要用于持续自动的构建、测试软件项目监控一些定时执行的任务。
我的环境:
机器:Windows Server 2008 R2 Enterprice
开发环境:VS2017
源代码管理:Git
软件安装
1、Jenkins
最新的Jenkins 安装包可以从这里下载:http://jenkins-ci.org/
安装完成后我们可以看到在windows服务中多了一个叫Jenkins的服务。
安装目录:C:\Program Files (x86)\Jenkins
2、.NET Framework 4.6.1
https://www.microsoft.com/zh-cn/download/details.aspx?id=49982
3、Microsoft Build Tools 2015
https://www.microsoft.com/zh-CN/download/details.aspx?id=48159
我机器安装vs2017是已经包含了msbuild(C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe),所有也可以不用下载。
MSBuild功能是“对.NET项目的源码进行编译”,虽然平时我们使用 Visual Studio 都是图形界面编译、发布程序,但实际上 Visual Studio 是去调用 MSBuild 来进行各种操作的,所以我们要想让 Jenkins 也能自动编译代码,也要为它准备一套 MSBuild。
4、.NET Framework 4.6.1 Developer Pack
https://www.microsoft.com/zh-CN/download/details.aspx?id=49978
5、NuGet x86 Commandline
https://dist.nuget.org/index.html
NuGet 的控制台程序,在编译程序之前,先需要使用 NuGet 进行包还原。这个软件不需要安装,放在一个固定的位置就行,例如F:\Software\nuget.exe 。
Jenkins->简单操作
打开控制台/命令行 - >转到Jenkins安装目录。分别执行以下命令:
停止:jenkins.exe stop
开始:jenkins.exe
start
重新启动:jenkins.exe
restart
登录界面用户名密码
如果不记得密码了,可以配置为不使用密码,如下:
修改安装目录下的config.xml文件的节点 <useSecurity>false</useSecurity>
而密码保存在文件:credentials.xml
jenkins->安装插件
Git插件获取源代码,MSBuild插件编译.net项目。
http://localhost:8080/ 中Manager Jenkins => Manage Plugins
在Available选项卡中,选中git Plugin安装。
在Available选项卡中,选中MSBuild安装。
jenkins->全局工具配置/系统设置
http://localhost:8080/configureTools/

其中 MSBuild Name 可以随便。
Path to MSBuild 就是我们MSBuild在当前电脑的路径:C:\Program Files
(x86)\MSBuild\14.0\Bin\MSBuild.exe
对应:VisualStudioVersion=11.0
注:实践证明,这里应该要根据使用的开发环境VisualStudio版本来决定。 即对应.NET版本的MSBuild编译器目录。
eg:使用VS2017编写的程序,这里应该填写 C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
对应:VisualStudioVersion=15.0
建任务
回到主界面,然后点击 New Job, 输入任务名称,推荐用英文,我们选择构建一个自由风格的软件项目。
项目名称:FirstSite
则从git上下载的代码放置在jenkins服务器的 d:\Jenkins\workspace\FirstSite目录【即工作目录 Workspace】下。(注:不一定是d盘,是jenkins 的安装目录)
源代码管理
源码管理选择git,配置我们的源代码的路径和用户名密码

MSBuil编译(介绍)
有好多种命令方式,主要介绍“windows批处理命令“和”Build a Visual Studio project or solution using MSBuild “
1、Execute Windows batch command(执行windows批处理命令)
命令举例:cd %WORKSPACE%\DEV\ npm install
其中 WORKSPACE解释:The absolute path of the directory assigned to the build as a workspace.(分配给构建的目录的绝对路径作为工作区) 即git文件down下来的路径(d:\Jenkins\workspace\FirstSite)。
点击输入框下方的“可用环境变量” 在Execute shell 或 Execute Windows batch command文本框中使用,使用方法:%变量名%
2、Build a Visual Studio project or solution using MSBuild

MSBuild Build File:解决方案的相对路径。【项目文件或者工程文件的名称】
.\angularDemo\angularDemo.csproj
注:指定编译文件时,可以指定解决方案(.sln)也可以指定为项目文件(.csproj),这样就只针对某个模块进行编译。
Command Line Arguments:MSBuild 的命令行参数
MSBuild.exe 用指定的选项生成指定的项目或解决方案文件。
方式一:根据vs项目发布配置文件来编译发布
【可以分本地发布和远程WebDePloy发布,依据在vs中的发布方式而定】
/t:Rebuild
/p:Configuration=Release
/p:DeployOnBuild=True;PublishProfile=Testing-Environment-CI-publish
其中 /t:Rebuild 表示每次都重建,不使用增量编译
PublishProfile表示使用 Testing-Environment-CI-publish.pubxml 发布文件来发布项目
注:/t是/target的缩写,/p是/property的缩写,多个属性间用分号或逗号分隔,最后不需要分号或逗号。
方式二:直接使用MSBuild命令来编译发布
参考:
/p: DeployOnBuild=true;
ExcludeGeneratedDebugSymbol=false;
ExcludeXmlAssemblyFiles=false;
SkipExtraFilesOnServer=True;
WarningLevel=4;
NoWarn=1591;
DeployTarget=MSDeployPublish;
MSDeployPublishMethod=WMSVC;
AllowUntrustedCertificate=True;
MsDeployServiceUrl=https://172.xx.yy.zz:8172/msdeploy.axd;
username=WDeployAdmin;
password=yyyyyy;
DeployIisAppPath=test/FirstSite;
Configuration=Dev
解释:
DeployOnBuild=true 表示启用编译并发布
Configuration=Release 表示编译Release版本
TargetFrameworkVersion=v4.5表示编译的目标是.NET
PublishProfile指定创建的Profile名称(不用写目录,仅文件名即可,而且不用扩展名) 程序编译成功后就是发布到我们PublishProfile指定的文件夹中
VisualStudioVersion=11.0 表示VS2012
MsDeployServiceUrl 指定发布服务器连接的URL(在IIS站点右键启用Web Deploy发布来设置的)
DeployIisAppPath 要发布的位置。Eg: Test/FirstSite 对应的在iis中是

Username 用户名。此处的用户名和密码,来自站点的IIS里面设置的windows用户。

设置密码

VS中站点发布
在VS中右击项目,发布
1、发布方法:选 文件系统
目标位置:E:\IIS_Deploy\FirstSite

PublishProfile=CustomProfile1,点发布会在目标位置生成相应的文件,在iis中配置后即可访问网站。
设置绑定800端口,访问:http://localhost:800/FirstSite/Practice/pages/#/
2、若发布方法选 Web Deploy,则是

服务器不写localhost而是写ip就会要求填写用户名和密码。
这些配置在Jenkins搭建.NET自动编译发布远程环境中会提到。
MSBuil编译构建(实际配置)
1、nuget包还原
我们在把项目提交到git或者svn上的时候并不包含这些包,我们把项目从git上拉到下来后用vs打开,vs会首先来还原这些nuget包,同样,如果我们是使用msbuild.exe来构建这些项目,也需要首先还原nuget包,否则项目由于缺少依赖而无法正常编译,下面我们就介绍如何使用nuget.exe来还原项目依赖。
在jenkins的项目,配置中,build节中 增加一个bat处理命令:
"F:\Software\nuget.exe" restore "%WORKSPACE%\angularDemo.sln"
指定 nuget.exe 的路径,然后使用 restore 命令,对当前目录下的 xx.sln 解决方案【不要用项目csproj】文件进行包还原。
注:bat命令 必须要在Build命令之前。点中拖动,可调换顺序。
2、Build配置——发布到本地
根据前面VS中发布项目,生成的CustomProfile1 来配置
1、MSBuild Build File:配置为.\angularDemo\angularDemo.csproj
或者C:\Program Files (x86)\Jenkins\workspace\FirstSite\angularDemo.sln 都可以。
2、Build的命令行参数:
/t:rebuild
/p:DeployOnBuild=true;Configuration=Release;VisualStudioVersion=15.0; PublishProfile=CustomProfile1
构建之后,站点会发布到CustomProfile1中设置的publishUrl的物理路径下。
常见的构建问题报错,参考:Jenkins构建常见问题
其他参考:
Jenkins搭建.NET自动编译发布本地环境的更多相关文章
- Jenkins搭建.NET自动编译发布远程环境
继上一篇文章Jenkins搭建.NET自动编译发布本地环境 发布到本地成功后,接下来配置发布到远程环境. Build配置——发布到远程 根据前面VS中发布项目,生成的CustomProfile2 来配 ...
- Jenkins搭建.NET自动编译测试与发布环境
本文地址: http://blog.csdn.net/wangjia184/article/details/18365553 操作系统Windows, 确保需要的.NET Framework已经安装 ...
- Windows2012中Jenkins搭建.NET自动编译测试与发布环境
安装7Zip 下载地址: http://www.7-zip.org/a/7z1602-x64.exe 安装Git 下载地址:https://github.com/git-for-windows/git ...
- Jenkins 搭建企业实战案例 (发布与回滚)
让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins非常易于安装和配置,简单易用 ...
- .NET代码自动编译发布
.NET代码自动编译发布 因本人一直使用.NET开发,在做项目的时候,每次都要涉及到各个环境的部署问题,手工操作容易出错,并且重复劳动多,所以一直在寻找一个能实现自动化部署的方案. 废话不多讲,先 ...
- Jenkins 通过 maven 构建编译 JAVA 项目环境
Jenkins 通过maven 构建编译 JAVA 项目环境 官网下载合适Jenkins版本包: 1.jenkins http://mirrors.jenkins.io/war-stable/ 2.J ...
- 一文搭建自己博客/文档系统:搭建,自动编译和部署,域名,HTTPS,备案等
本文纯原创,搭建后的博客/文档网站可以参考: Java 全栈知识体系.如需转载请说明原处. 第一部分 - 博客/文档系统的搭建 搭建博客有很多选择,平台性的比如: 知名的CSDN, 博客园, 知乎,简 ...
- Jenkins搭建windows service自动编译发布环境
类库项目(Task)部署 前面搭建了Web站点的环境,类库项目发布不同于站点项目,它只需要将MSBuild编译出来的dll复制到目标服务器上即可,而不需要通过Web Deploy,下面来说一下如何发布 ...
- Jenkins 搭建U3D自动发布 IOS
http://www.cnblogs.com/yinghuochong/archive/2013/09/01/3294940.html 1.安装包,工具略过. 2.插件管理 Subversion Pl ...
随机推荐
- (26)SQLite集成与用法
概述 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据.SQLite是使用非常广泛的嵌入式数据库,它有小巧 ...
- springcloud6---Eureka的配置:
Eureka的配置: 自我保护:表示eureka进入了自我保护模式,eureka启动的时候会从高可用其他节点获取注册表信息,eureka client会每30秒发送心跳,如果eureka server ...
- 【运维技术】Nginx安装教程(yum安装,源码编译)
安装方式 yum直接更新源安装 源码直接编译之后安装 使用yum进行直接安装 Installing a Prebuilt CentOS/RHEL Package from an OS Reposito ...
- MySQL事务之-2
在上一篇中我们提到了MySQL的事务特性,这一片主要讲述事务的实现. 事务的隔离性由锁来实现.原子性,一致性,持久性通过数据库的redo和undo log来实现. redo恢复提交事务修改页的操作,而 ...
- 20145307陈俊达《网络对抗》Exp2 后门原理与实践
20145307陈俊达<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 非正规网站下载的软件 脚本 或者游戏中附加的第三方插件 例举你知 ...
- linux内核源码在线浏览
1.https://elixir.bootlin.com (只能搜索函数和宏定义,功能单一) 2.https://lxr.missinglinkelectronics.com (比第一个功能多一些, ...
- 【eclipse】点Clean后没反应
问题:点击Clean重新编译class后没反应 解决:
- hdu 2204 Eddy's爱好 容斥原理
Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- Spring ApplicationListener使用方法及二次调用问题解决
使用场景 在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册等等.这个时候我们就可以使用Spring提供的ApplicationListener来 ...
- nodejs项目的model操作mongo
想想以前学习hibernate的时候,学习各种表和表之间的映射关系等一对多,多对一,多对多,后来到了工作中,勇哥告诉我, 那时在学习的时候,公司中都直接用外键关联. 这里我们学习下,如何在Nodejs ...