持续集成是必要的!
希望达到的效果是:开发同事签入代码后,对应的站点可以自动实现更新。目前还只在在内部服务器上实现开发环境中的站点更新,不涉及到线上的发布。
目前使用Jenkins实现这样的持续集成。
准备环境
如果机器上没有Git,需要先安装下
如果机器上没有安装过VS,安装下MSBuild,或者直接在本机拷贝
下载Jenkins(用的是Weekly Release,更新比较快),一路安装,安装完成后会自动打开localhost:8080,开始启动(如果启动过程中出现503错误,可以试下重启Jenkins服务)
安装相关插件(MSBuild Plugin 和 Git Plugin对我们来说是必需的)
Job设置
MSBuild设置
在 Jenkins > 系统设置 > Global Tool Configuration 中设置创建一个Job
源码管理配置
设置:Repository URL(Git地址)、Credentials(凭证,https方式的话就是用户名加密码,点击后面的“Add”增加)。- 构建配置
先需要执行下NuGet还原,下载项目相关的dll,不然无法编译通过。(如果机器上没有nuget.exe,需要先载下,C:\Program Files (x86)\NuGet\
是我们nuget.exe的位置)。
cd C:\Program Files (x86)\NuGet\
nuget.exe restore "C:\Program Files (x86)\Jenkins\workspace\Test\****\****.sln"
将Command Line Arguments,设置为:/t:Rebuild /p:Configuration=Release;PublishProfile=GTWL;DeployOnBuild=true
,其中PublishProfile=GTWL
GTWL是项目发布配置文件的名字。
- 构建触发器配置
如果要实现代码签入自动编译发布需要这样设置下
同时需要配合上Git服务器的webhook功能,POST的URL设置为,http://jenkins:8080/git/notifyCommit?url=https://git.oschina.net/****/****.git
,这样代码一签入,Git服务器便会请求这个地址,触发了Job。
也可以直接在浏览器上试用下,地址栏直接输入:http://localhost:8080/git/notifyCommit?url=https://git.oschina.net/****/****.git
,会发现Job确实就执行了。
不过因为我们是内部服务器,Git服务器不方便直接请求,所以只能退而求其次,定时去触发Job了。下面是每20分钟执行一次,好像最少是每分钟一次。
参考资料:
- 用MSBuild和Jenkins搭建持续集成环境:http://www.infoq.com/cn/articles/MSBuild-1
- 园友,Jenkins持续集成 & .NET:http://www.cnblogs.com/capqueen/p/JenkinsOne.html
- 园友,使用jenkins配置.net mvc网站进行持续集成一:http://www.cnblogs.com/jiekzou/p/5255081.html
- hook:http://stackoverflow.com/questions/12794568/how-to-configure-git-post-commit-hook