由于某些历史问题,最近终于可以从java中解脱出来,继续耕耘.Net了,第一步就是把之前的java项目翻成.net。之前已经实现过一次,翻起来还是比较快的(当然基础架构/实体模型已经重新思考并改进),而且测试也在跟进,所以一天要发无数次版本,还要考虑开发环境、测试环境,总发布出错,甚是心累。于是下决心改善效率,以上为背景。

  看了很多文章,最终决定使用Jenkins。以下是我整个配置的记录:

1. 环境

  Platform: .Net4.5

  IDE: Visual Studio 2015 & MsBuild

  包管理:NuGet

  版本控制:TFS-git

  服务器: windows 2012 R2(IIS8)

  其他: webdeploy

  参考文章:http://blog.couchbase.com/2016/january/continuous-deployment-with-jenkins-and-.net

  

2. 软件下载与安装

 Jenkins:

  在https://jenkins.io/index.html 下载windows版本,按照步骤安装,安装好之后,jenkins管理地址默认为 http://localhost:8080

 IIS:

  除了安装IIS必要的功能,注意勾选 web服务器->管理工具 中 除"IIS6 管理兼容性"的功能

 WebDeploy:

  下载地址 http://www.iis.net/downloads/microsoft/web-deploy ,注意一定要勾选 IIS Deployment Handler ,否则使用PublishProfile时会报404错误

  安装好之后,你的IIS服务器会多出来 Management Service,点进去,修改配置

 Git客户端:

  这个就不多说了,很多地方都有

 MsBuild:

  地址 https://www.microsoft.com/en-us/download/details.aspx?id=48159 。这里安装的只是精简版的MsBuild,如果有VS的全量版那是最好不过,后面build的时候就知道有多坑了==!

  如果只装这个MsBuild,要将你开发机器上的 MsBuild\Microsoft\VisualStudio 文件夹拷贝到服务器上相应的文件夹,否则编译MVC项目时会报错(Target找不到)

 Microsoft SDK:

  同样是build时候用到(error : Can't find the valid AspnetMergePath),你可以安装或者直接拷贝,把文件夹C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A 拷贝到目标服务器相应目录

3. 配置

 Jenkins配置:

  1> 安装Git plugin, Multi SCMs 和 MsBuild plugin (在参考文章中有详细说明)

    步骤:a) 打开jenkins http://localhost:8080

       b) 找到Manage Jenkins->Manage Plugins->可选插件

       c) 搜索插件并安装

      配置:如下图

      

    注意配置 Git plugin 中的 Global Config user.name和user.email

 2> 项目配置

    我这里就直接贴出来了,也比较简单

    

说明: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

 3> VS PublishProfile配置

  VS项目中新建配置文件,选择Web Deploy,然后指定Server/Site name/User name/Password/Destation URL ,配好之后点击一下Validate Connection,通过就成功啦!

  配置保存之后,打开相应的pubxml文件,加上以下这两行:

  <Password>your password</Password>
  <AllowUntrustedCertificate>True</AllowUntrustedCertificate>

4 Try it!

  好了,到这里一个.Net MVC项目自动构建就基本弄好了,进入jenkins,找到刚才配置的项目,点击 立即构建。

  构建会按照 git拉取->nuget 还原->build-> deploy->send email这个顺序执行,点击Console output可以看到详细的执行过程,很长我就不贴出来了。有时间再写一下 windows 服务的自动构建。

  现在部署还是很爽的,一键完成,No Errors!

 

.Net持续集成 —— Jenkins+Git+WebDeploy的更多相关文章

  1. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  2. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结h ...

  3. 持续集成~Jenkins构建GitHub项目的实现

    有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...

  4. 持续集成Jenkins + robot framework + git

    Jenkins + robot framework + git持续集成 一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Git Client Plugin.GIT plugi ...

  5. 【持续集成】GIT+jenkins+snoar——jenkins发布php、maven项目

    一.持续集成 1.1 什么是持续集成? continuous integration (CI),持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员,每天至少集成一次,也就意味着 ...

  6. python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用

    11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...

  7. 持续集成-jenkins介绍与环境搭建

    什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...

  8. 敏捷持续集成(Jenkins)

    在前面已经完成git和gitlab的相关操作 1.持续集成的概念: 1. 什么是持续集成: 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可 ...

  9. 一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP

    什么是持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...

随机推荐

  1. wpf Binding 小记录

    1.后台属性绑定: Grid g = new Grid() { Width = 60, Height = 100 }; g.SetValue(Panel.ZIndexProperty, 10); // ...

  2. Servlet之过滤器(Filter)

    一.概述 Servlet 过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看.提取或以某种方式操作正在客户机和服务器之间交换的数据.这些组件通过一个配置文件来声明,并动态地处理,当在web.x ...

  3. 微信小程序实战[01]

    接触微信小程序也有一段时间了,以天气预报练一下手. 主要实现了以下功能: (1) 首页图标式菜单,便于以后扩展功能 (2)首页顶部滚动消息 (3)页面右上角三点菜单转发功能,便于小程序的传播 (4)天 ...

  4. nova-api nova-compute 启动服务的时候有的没有加配置文件有的加了

    nova/nova/cmd/api.pyfrom nova import config def main(): config.parse_args(sys.argv) logging.setup(CO ...

  5. AX_Unit

    UnitConvert::qty(_deliverNow,      salesLine.SalesUnit,      salesLine.inventTable().inventUnitId(), ...

  6. Yarn的Linking dependencies特别慢的优化方法

    通过以下方法,可以提升部分速度: 把项目文件夹添加进杀毒软件的白名单 把Yarn的缓存文件夹(yarn cache dir查看路径)添加进杀毒软件白名单 把Yarn的安装目录添加进杀毒软件白名单 把N ...

  7. mysql第一课,数据库的简单简单操作方法(配图略虐狗)

    mysql -u root -p 并输入密码进入mysql管理界面 show databases; 显示数据库列表 use 数据库名; 进入该数据库 show tables;显示表列表 建立新表 添加 ...

  8. Java:Copy-On-Write容器

    Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...

  9. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  10. php常用字符串方法

    chop()        移除字符串右侧的空白字符或其他字符 ltrim()        移除字符串左侧的空白字符或其他字符 rtrim()        移除字符串右侧的空白字符或其他字符 tr ...