环境:实现自动编译与自动化测试,发布到远程服务器,环境 VS2015 +WIN2008R2

什么是TeamCity

TeamCity是由Jetbrains开发的一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net 等项目开发。 TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目管理、编译,单元测试,自动发布等等,所有的这些,都是让你的团队快速享有持续继承带来的效率提升、高质量的软件保障。TeamCity提供一个支持20个Build Configuration+3个Agent的免费版本。

配置WebDeploy

Visual Studio 默认提供三种发布的方式,文件,FTP,WebDeploy;最方便的还是WebDeploy,它可以在Visual Studio中一键部署到服务器上,并且智能判断哪些文件是新增的,哪些是需要修改或删除的。

下载: http://www.iis.net/downloads/microsoft/web-deploy [ 安装IIS选中管理工具 ]
1.启用Remote connections ,打开IIS中Management Service,勾选Enable Remote connections
2.IIS中选择项目启用webdeploy,生成配置文件
3.VS发布选择webdeploy选项,导入步骤2的配置文件
具体配置: http://edi.wang/post/2013/12/21/iis-webdeploy-on-ws2008r2

配置TeamCity

win环境下安装比较简单,一路NEXT即可,配置过程中有可能会遇到如下问题:

选择数据库

The MS SQL Server JDBC driver is not found in the C:\ProgramData\JetBrains\TeamCity\lib\jdbc directory.
Download the driver from the Microsoft Download Center and follow the instructions and place the driver jar file into the C:\ProgramData\JetBrains\TeamCity\lib\jdbc directory on the server.

默认是没有MSSQL驱动的,需要复制jdbc驱动到C:\ProgramData\JetBrains\TeamCity\lib\jdbc目录[高版本的JDBC不可以]

Agent&MSBuildTools

Warning: No enabled compatible agents for this build configuration. Please register a build agent or tweak build configuration requirements.

默认Agent需要配置MSBuildTools14.0_x86_Path,需要安装MSBuildTools
http://stackoverflow.com/questions/20008861/team-city-unmet-requirement-msbuildtools12-0-x86-path-exists
Developer Tools Microsoft 生成工具 2015
https://www.microsoft.com/zh-CN/download/details.aspx?id=48159

创建项目

选择Create Project From URL重源码服务器上获取代码[git svn tfs等],Build Configurations 中我配置了两项

1.Build是编译源码

Triggers 配置每次有新的源码迁入时就编译一个版本

2.Deploy发布到测试服务器

/p:PublishProfile=WebDeploy.pubxml
/p:OutputPath=Release
/p:DeployOnBuild=True /p:OutputPath=bin

Triggers 配置当第一步成功的时候触发

3.提交代码测试

此项目引用这台计算机上缺少的 NuGet 程序包。使用 NuGet 程序包还原可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 ..\packages\Microsoft.Net.Compilers.2.2.0\build\Microsoft.Net.Compilers.props。

启用nuget插件

默认会nuget获得第三方的包,可能因为nuget被墙的原因,需要多试几次下载有本地的环境就可以了

遇到的一些问题:

C:\TeamCity\buildAgent\work\177ef13051171b3c\xxx\xxx.Interface.csproj(361, 3): error MSB4019: 未找到导入的项目“C:\Program

Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets”。请确认 <Import> 声明中

的路径正确,且磁盘上存在该文件。C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio

解决方式:默认安装VS的机器拷贝C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio目录下的文件到安装TeamCity同样的目录下。

Controllers\HomeControllerTest.cs(2, 17): error CS0234: The type or namespace name 'VisualStudio' does not exist in the

namespace 'Microsoft' (are you missing an assembly reference?)
Controllers\ValuesControllerTest.cs(7, 17): error CS0234: The type or namespace name 'VisualStudio' does not exist in the

namespace 'Microsoft' (are you missing an assembly reference?)
Controllers\HomeControllerTest.cs(8, 6): error CS0246: The type or namespace name 'TestClass' could not be found (are you

missing a using directive or an assembly reference?)
Controllers\HomeControllerTest.cs(11, 10): error CS0246: The type or namespace name 'TestMethod' could not be found (are you

missing a using directive or an assembly reference?)

解决方式:去除VS自带的测试DLL ,可以使用NUnit代替,相应的代码名称也得替换下:

[TestFixture]
public class HomeControllerTest {
[Test]
public void Index()
{
// 排列
HomeController controller = new HomeController();
// 操作
ViewResult result = controller.Index() as ViewResult;
// 断言
Assert.IsNotNull(result); Assert.AreEqual("Home Page", result.ViewBag.Title);
}
}

具体:http://www.cnblogs.com/ShineTan/archive/2012/03/26/2417475.html

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Deploy\Microsoft.Web.Publishing.MSDeploy.Common.targets(55,

5): 打包/发布任务 Microsoft.Web.Publishing.Tasks.CreateProviderList 未能加载 Web Deploy 程序集。此计算机上未正确安装

Microsoft Web Deploy。建议安装 Microsoft Web Deploy v3 或更高版本

解决方式:安装TeamCity的服务器安装WebDeploy

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276, 5): error

ERROR_CERTIFICATE_VALIDATION_FAILED: Web 部署任务失败。 (已使用指定的进程(“Web Management Service”)连接到远程计算机

(“192.168.xxx.xxx”),但未能验证服务器的证书。如果你信任该服务器,请再次连接并允许不信任的证书。  在以下位置了解更多信息:

http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED 。)

解决方式:WebDeploy配置文件增加如下配置(https://msdn.microsoft.com/en-us/library/ff398069.aspx)

<!--信任证书-->
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276, 5): error

ERROR_USER_UNAUTHORIZED: Web 部署任务失败。 (已使用 Web 管理服务连接到远程计算机(“192.168.xxx.xxx”),但未能授权。请确保你使

用了正确的用户名和密码、你连接的站点已存在并且凭据代表的用户有权访问该站点。  在以下位置了解更多信息:

http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED。)

解决方式:WebDeploy配置文件增加如下配置

<!--用户密码-->
<Password>xxxxxxxxxx</Password>

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft.TypeScript.targets(195, 5): error MSB6003: The specified task executable "tsc.exe" could not be run. Could not find a part of the path 'C:\Program Files (x86)\Microsoft SDKs\TypeScript'

解决方案:安装 TypeScript

升级版本:cope 安装包按照提示输入 log 下的 token 即可完成

REFER:

如何部署站点到指定的服务器上面

http://www.cnblogs.com/jiekzou/p/5257982.html
Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率
https://cnodejs.org/topic/558df089ebf9c92d17e73358
用命令行脚本发布Azure网站
http://blchen.com/publish-azure-website-from-command-line-msbuild/
Jenkins搭建.NET自动编译测试与发布环境
http://blog.csdn.net/wangjia184/article/details/18365553
How to build ASP.NET applications in TeamCity with MSBuild Tools 2013 and .NET Framework 4.5 SDK
http://www.danmusk.com/how-to-build-asp-net-applications-in-teamcity-with-msbuild-tools-2013-and-net-framework-4-5-sdk/
Deploy ASP.NET projects from TeamCity with Web Deploy
http://www.danmusk.com/deploy-asp-net-projects-from-teamcity-with-web-deploy/
Continuous Integration & Delivery For GitHub With TeamCity
http://www.mehdi-khalili.com/continuous-integration-delivery-github-teamcity
How to: Edit Deployment Settings in Publish Profile (.pubxml) Files and the .wpp.targets File in Visual Studio Web Projects
https://msdn.microsoft.com/en-us/library/ff398069
Web Deployment Made Awesome: If You're Using XCopy, You're Doing It Wrong
https://channel9.msdn.com/Events/MIX/MIX10/FT14
Build ASP.NET 4.5 without Visual Studio on Build Server
http://stackoverflow.com/questions/12944502/build-asp-net-4-5-without-visual-studio-on-build-server
Team city unmet requirement: MSBuildTools12.0_x86_Path exists
http://stackoverflow.com/questions/20008861/team-city-unmet-requirement-msbuildtools12-0-x86-path-exists

https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/

https://octopus.com/

持续集成 TeamCity 的配置与使用的更多相关文章

  1. 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

    安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...

  2. Gitlab-CI持续集成之Runner配置和CI脚本

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  3. [转]Gitlab-CI持续集成之Runner配置和CI脚本

    本文转自:https://www.cnblogs.com/jiukun/p/7481287.html 一.简介 1. 为实现持续集成,需为该项目准备以下两样东西: 1)软件集成脚本.(gitlab-c ...

  4. Jenkins持续集成_01_Mac安装配置

    前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.在自动化测试中,用来持续集成,跑定时任务进行定时自动化监测.更详细介绍可查看jenkins官网: ...

  5. Jenkins可持续集成项目搭建——配置Jenkins基本设置 & 运行脚本报错点

    一.系统管理->全局工具配置:配置JDK.GIT: 二.项目配置-部署源码管理的远程地址 三.项目配置-构建触发器(以Windows平台举例) 构建项目时,会自动分配一个运行空间(D:\Prog ...

  6. Jenkins可持续集成项目搭建——配置邮件

    1.系统管理->系统设置 (1)填写系统管理员邮件地址 (2)填写邮箱配置.发件人邮箱.收件人邮箱 注:1>发件人邮箱地址必须和系统管理员邮箱地址一致 2> 部分邮箱配置输入的不是登 ...

  7. 使用gitlab, jenkins搭建CI(持续集成)系统(2) -- 配置webhook触发构建

    1. 在gitlab上配置192.168.1.30的ssh秘钥,使jenkins可以操作gitlab上的project 进入gitlab,点击右上角 点击 Settings -> SSH key ...

  8. 使用jenkins配置.net mvc网站进行持续集成二

    上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...

  9. 用持续集成工具Travis进行构建和部署

    用持续集成工具Travis进行构建和部署 用持续集成工具Travis进行构建和部署 摘要:本文简单说明了如何使用持续集成工具Travis进行构建和部署的过程. 1. 概述 持续集成(Continuou ...

随机推荐

  1. 阿里云oss如何上传一个文件夹

    最近公司在做工程项目,实现文件夹云存储上传 网上找了很久,发现很多项目都存在一些问题,但还是让我找到了一个成熟的项目. 工程: 对项目的文件夹云存储上传功能做出分析,找出文件夹上传的原理,对文件夹的云 ...

  2. 记录:CSS特殊性——权值规则

    浏览器是根据权值来判断使用哪种css样式的,权值高的就使用哪种css样式. 下面是权值的规则: 标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100.例如下面的代码: p{color:r ...

  3. day27(反射之内省机制)

    内省 内省:底层是使用反射机制实现的,是对于反射的进一步封装. 反射:通过类名来获取类中的所有属性和方法及类中的所有隐藏的方法. 内省:通过一个标准类(javabean类)来获取bean中的字段.ge ...

  4. 【repost】Javascript操作DOM常用API总结

    Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认 ...

  5. MySQL5.7的安装配置

    双击进入安装,如下图: 2 点击上图红框“Install MySQL Products”进入安装界面,如下图: 3 根据上图当中第一步骤与第二步骤,进入下图: 4 进入设置界面,如下图: 5 在原来旧 ...

  6. js跳转页面方法实现汇总

    一.页面之间的跳转传参 1.在页面之间跳转的方式有两种: window.location.href=”test.html?num=10”   地址会改变参数也会被传递但是不会打开新窗口 window. ...

  7. HDU2955 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=2955 题目大意:给你一个劫匪抢银行的最高安全概率,给你银行得到钱数,和劫匪在这个银行可以逃跑的概率,问你最多能抢 ...

  8. [javascript] javascript 实现数据滚动加载

    // tpl generate var tmpl = (function (cache, $) { return function (str, data) { var fn = !/\s/.test( ...

  9. 怎么找到与你Eclipse匹配的spring tool suite插件

    在Eclipse中安装插件是很简单的,但是某些插件需要与你的Eclipse的版本对应才能用,比如spring的插件. 首先,查看你的Eclipse的版本. 从eclipse的Help菜单的About ...

  10. min cost max flow算法示例

    问题描述 给定g个group,n个id,n<=g.我们将为每个group分配一个id(各个group的id不同).但是每个group分配id需要付出不同的代价cost,需要求解最优的id分配方案 ...