因为某些历史问题,最近终于能够从java中解脱出来,继续耕耘.Net了,第一步就是把以前的java项目翻成.net。以前已经实现过一次,翻起来仍是比较快的(固然基础架构/实体模型已经从新思考并改进),并且测试也在跟进,因此一天要发无数次版本,还要考虑开发环境、测试环境,总发布出错,甚是心累。因而下决心改善效率,以上为背景。html
看了不少文章,最终决定使用Jenkins。如下是我整个配置的记录:java
Platform: .Net4.5git
IDE: Visual Studio 2015 & MsBuildweb
包管理:NuGetwindows
版本控制:TFS-git服务器
服务器: windows 2012 R2(IIS8)架构
其余: webdeploy工具
参考文章:http://blog.couchbase.com/2016/january/continuous-deployment-with-jenkins-and-.net测试
在https://jenkins.io/index.html 下载windows版本,按照步骤安装,安装好以后,jenkins管理地址默认为 http://localhost:8080ui
除了安装IIS必要的功能,注意勾选 web服务器->管理工具 中 除"IIS6 管理兼容性"的功能
下载地址 http://www.iis.net/downloads/microsoft/web-deploy ,注意必定要勾选 IIS Deployment Handler ,不然使用PublishProfile时会报404错误
安装好以后,你的IIS服务器会多出来 Management Service,点进去,修改配置
这个就很少说了,不少地方都有
地址 https://www.microsoft.com/en-us/download/details.aspx?id=48159 。这里安装的只是精简版的MsBuild,若是有VS的全量版那是最好不过,后面build的时候就知道有多坑了==!
若是只装这个MsBuild,要将你开发机器上的 MsBuild\Microsoft\VisualStudio 文件夹拷贝到服务器上相应的文件夹,不然编译MVC项目时会报错(Target找不到)
一样是build时候用到(error : Can't find the valid AspnetMergePath),你能够安装或者直接拷贝,把文件夹C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A 拷贝到目标服务器相应目录
步骤:a) 打开jenkins http://localhost:8080
b) 找到Manage Jenkins->Manage Plugins->可选插件
c) 搜索插件并安装
配置:以下图
注意配置 Git plugin 中的 Global Config user.name和user.email
我这里就直接贴出来了,也比较简单
说明:MsBuild配置中有额外选项,这里贴出来,/p:DeployOnBuild=true;PublishProfile=backend /p:Configuration=Release /p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools"
PublishProfile就是VS中指定的发布配置名称,后面的AspnetMergePath用于解决上面MsTools的报错
注意:1. 你配置的路径最好不要过深,微软限制了路径最大长度266,到时候会悲剧的==!
2. 若是Git认证凭据填写在URL中,用户名/密码不能够包含特殊字符,不然会被encode致使拉取失败。建议不要配置在URL中,本文这样配置是由于GIT服务器为TFS,不支持Credential
VS项目中新建配置文件,选择Web Deploy,而后指定Server/Site name/User name/Password/Destation URL ,配好以后点击一下Validate Connection,经过就成功啦!
配置保存以后,打开相应的pubxml文件,加上如下这两行:
<Password>your password</Password>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
好了,到这里一个.Net MVC项目自动构建就基本弄好了,进入jenkins,找到刚才配置的项目,点击 当即构建。
构建会按照 git拉取->nuget 还原->build-> deploy->send email这个顺序执行,点击Console output能够看到详细的执行过程,很长我就不贴出来了。有时间再写一下 windows 服务的自动构建。
如今部署仍是很爽的,一键完成,No Errors!