使用jenkins配置.net mvc5网站自动构建全过程记录
持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了。最终可以实现的一个效果是,svn提交代码,服务器端自动编译并发布。
所使用的版本:windows server 2008 r2,并使用它自带的iis服务器。
1.机器上安装好.net framework 4.5及.net framework 4.5 sdk(下载地址:https://msdn.microsoft.com/zh-cn/windows/hardware/hh852363),如果你的机器上已经安装好了vs,并能够编译.net 项目,那可以跳过这一步。
2.下载jenkins到服务器,并安装。
地址:http://jenkins-ci.org/
你可以看到这样的界面:
3.点击左边的系统管理,选择插件管理,安装一个新的插件叫MSBuild Plugin
如下图,打勾之后点击直接安装即可。
4.安装完成后重启Jenkins,然后点击左侧的系统管理,进入系统设置中。
5.找到下面的MSBuild节点,并点击新增MSBuild,然后填写名称和MSBuild的路径,我的配置如下:
6.在系统管理中找到Subversion节点(注:我使用的是svn代码管理工具,如果你使用其他的,请配置其他节点),选择为目前使用的版本。
这时候,最基本的环境就配置起来了,不过这时候的Jenkins随便谁都能进来改配置,自己百度一下,把身份验证启用了吧,相信作为高级攻城狮的你,这个不在话下。
环境好了之后,我们来新增一个项目进去。let's go
1.点击页面上面的创建一个新任务,选择构建一个自由风格的软件项目,并填写好名称。
2.告诉Jenkins你的svn账号,以便它来获取你当前svn上面的程序。Repository中,填写好你要自动构建的项目的svn地址,在Credentials这一项中,你需要先点击add,填写好您的用户名和密码(本文中未说明的项均保持默认即可)。
3.构建触发器中勾选Poll SCM,日程表中填写* * * * *,表示每一分钟它去svn服务器看一次有没有最新的版本。
4.在构建下面点击增加构建步骤,并选择Build a Visual Studio project or solution using MSBuild,在Command Line Arguments这一项中,填写我下面的这段代码
/m trunk/xxx.sln /t:Rebuild /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=xxx /p:TargetFrameworkVersion=v4.5
/m 后面写你要编译的sln文件,/p:后面是一个个的参数,Configuration=Release表示release方式的编译,PublishProfile=xxx指的是你的发布的文件名称,TargetFrameworkVersion表示你的目标.net framework版本,我用的是4.5,所以就写4.5就行了。
我的配置如下(网上有人说把/m参数写到MSBuild Build File那里也行,我尝试了一下没有成功):
在此过程中,还遇到了很多的问题,但是有时候真的是稀里糊涂的解决的,大概我给大家说说我遇到的问题:
1.开发机上的MSBuild文件夹需要copy到服务器.Microsoft ASP.NET也需要copy到服务器。
2.服务器上需要安装.net framework的sdk,你需要编译哪个版本的项目就装哪个版本的sdk
从下面额链接找到对应的SDK下载:
http://msdn.microsoft.com/en-us/library/windows/desktop/ff851942.aspx
Win8.1 对应 .NET Framework V4.5.1
Win8 对应 V4.5
2.编译mvc项目废了很大的劲,过程中走了很多的弯路,最后我发现,服务器上还是少一些SDK(我目前还没有搞明白这些SDK要从哪里下载)
我把开发机器上C:\Program Files (x86)\Microsoft SDKs\Windows复制到服务器上,并且要把对应的注册表的项备份了恢复到服务器,最后编译还是报错了,说是找不到aspnet_merge这个东西,找了许久,找到了http://stackoverflow.com/questions/16070886/vs-2012-publish-cant-find-the-valid-aspnetmergepath这篇参考文章,然后把C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Transform文件夹下面的Microsoft.Web.Publishing.AspNetCompileMerge文件中其中的一个<PropertyGroup>下面新增了下面的代码(注:我用的是4.5的FrameWork,所以是v8.0A这个文件夹,4.5.1应该是v8.1A这个文件夹下面)
<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>
它前后的内容如下,大家去找AspnetMergeName去区分就差不多了,服务器上只有记事本,所以无法提供行号。
<PropertyGroup>
<GetAspNetMergePathDependsOn>
GetFrameworkPaths;
</GetAspNetMergePathDependsOn>
</PropertyGroup>
<Target
Name="GetAspNetMergePath"
DependsOnTargets="$(GetAspNetMergePathDependsOn)"
Condition ="'$(GetAspNetMergePath)' != 'false'">
<PropertyGroup>
<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>
<AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
<AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
</PropertyGroup>
<Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
Text="Can't find the valid AspnetMergePath" />
</Target>
3.如果失败原因是缺少某个系统的程序集(比如:system.web.mvc),那么你一定要在本地项目中,检查一下这个程序集的属性中的复制到本地这一项是否为True,不为True,改为True即可。
4.其实中间还有很多的错误,都是慢慢解决掉的,如果你不介意,可以给服务器上安装一个vs 2012 express for web,也不大,安装包600M左右,能为你省不少事儿。
5.过程中我遇到一个非常蛋疼的问题,一直提示我找不到system.web.http这个dll,但是我确定我有这个dll,而且是复制到本地=True,但是死活就是编译不过,提示我没有这个dll,少命名空间,到现在都没有搞明白,最后是我安装了vs 2012 express好像就没有了,如果哪位大牛知道为啥,请告诉我,万分感谢。
时间不早了,为编译通过正在兴奋的我该平静下来去睡觉了。
使用jenkins配置.net mvc5网站自动构建全过程记录的更多相关文章
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- 使用jenkins配置.net mvc网站进行持续集成二
上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...
- jenkins配置.net mvc网站
jenkins配置.net mvc网站 上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. ...
- jenkins的 git多分支自动构建
一.先做好jenkins和gitlab的webhook自动构建 二.选择哪个分支(我这是test分支) 三.选择build Triggers 四.过滤test分支 五.保存即可
- 使用Jenkins配置Git+Maven的自动化构建
Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...
- jenkins+maven+git+tomcat+salt自动构建
jenkins 安装步骤 环境: centos7,jdk1.8.0,jenkins2.165,maven3.5.2 一. 安装配置java环境 JDK1.8下载地址:http://www.orac ...
- [CentOS]使用Jenkins配置Git+Maven的自动化构建
背景 最近安装Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在90%以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形 ...
- 使用jenkins配置.net mvc网站进行持续集成三
前两篇讲解了Jenkins的配置和VS远程发布,现在还有一个问题,VS项目远程发布的时候,配置的是覆盖所有文件重生成的,而通常类似于配置文件这种东西,在本地开发环境和测试环境是不一样的.所以我们通常需 ...
- 使用Jenkins进行android项目的自动构建(3)
建立Jenkins项目 1. “新增作业”->填写作业名称->选择“建置 Maven 2 或 3 專案”->OK.新增成功后会进入“組態設定”,暂时先保留默认值,稍后再进行设定. 2 ...
随机推荐
- JavaScript(JS)计算某年某月的天数(月末)
方法1 /** * 获取某年月的天数 * @param year 年 * @param month 月(0-11) * @returns {number} 天数 */ var getDaysOfMon ...
- ccf-201712-2 游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,--,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋 ...
- rocketmq 两个线程同时消费一个消息
1.问题描述 线上项目A部署两台机器,每台机器两个实例,订阅同一个topic,消费心跳数据. (两台机器host1,host2) 运维同事 部署时 有一个实例用root账户重启的, 然后该实例出现两个 ...
- "UTF-8"、"UTF8"、"utf-8"、"utf8"之间的区别
本质上没有区别.1.“UTF-8”是标准写法;2.在Windows下边英文不区分大小写,所以也可以写成“utf-8”;3.“UTF-8”也可以把中间的“-”省略,写成“UTF8”.一般程序都能识别,但 ...
- Java基础重点知识之欣欣向然
题目: 第一题:二重循环: public class Text01 { //完成歌曲排序的效果 public static void main(String[] args) { String[] zi ...
- 关于Array的操作
使用Array创建数组 // 使用Array 构造函数 var colors = new Array(); // 预先给数组项数量 var colors = new Array(20); // 向Ar ...
- Windows API 编程----EnumWindows()函数的用法
1. 函数原型: BOOL WINAPI EnumWindows( _In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam); lpEnumFunc: 应用程序 ...
- 沙盒 sandbox 简记随笔
沙盒又称沙箱(sandbox),是一种按照 安全策略 限制 程序行为 的 执行环境. “沙盒”技术的实践运用流程是: 1. 让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分运行,“沙盒”会记下 ...
- mysql 更新sql报错:You can't specify target table 'wms_cabinet_form' for update in FROM clause
数据库里面有两个字段的位置不对,要把他们对调换下.因为没有数据库写的权限,需要用sql语句来实现.原来以为简单的 update table a set a.字段a=(select b字段 from t ...
- git rebase vs git merge详解
https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa#.std3ddz0g 请参考另外一篇文 ...