持續集成 TeamCity 的配置與使用

環境:實現自動編譯與自動化測試,發佈到遠程服務器,環境 VS2015 +WIN2008R2html

什麼是TeamCity

TeamCity是由Jetbrains開發的一款功能強大的持續集成(Continue Integration)工具,包括服務器端和客戶端,目前支持Java,.Net 等項目開發。 TeamCity提供一系列特性可讓團隊快速實現持續繼承:IDE工具集成、各類消息通知、各類報表、項目管理、編譯,單元測試,自動發佈等等,全部的這些,都是讓你的團隊快速享有持續繼承帶來的效率提高、高質量的軟件保障。TeamCity提供一個支持20個Build Configuration+3個Agent的免費版本。node

配置WebDeploy

Visual Studio 默認提供三種發佈的方式,文件,FTP,WebDeploy;最方便的仍是WebDeploy,它能夠在Visual Studio中一鍵部署到服務器上,而且智能判斷哪些文件是新增的,哪些是須要修改或刪除的。git

下載: 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-ws2008r2github

配置TeamCity

win環境下安裝比較簡單,一路NEXT便可,配置過程當中有可能會遇到以下問題:web

選擇數據庫數據庫

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不能夠]app

Agent&MSBuildToolside

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

默認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 中我配置了兩項

image

1.Build是編譯源碼

image

Triggers 配置每次有新的源碼遷入時就編譯一個版本

image

2.Deploy發佈到測試服務器

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

image

Triggers 配置當第一步成功的時候觸發

image

3.提交代碼測試

此項目引用這臺計算機上缺乏的 NuGet 程序包。使用 NuGet 程序包還原可下載這些程序包。有關詳細信息,請參閱 http://go.microsoft.com/fwlink/?LinkID=322105。缺乏的文件是 ..\packages\Microsoft.Net.Compilers.2.2.0\build\Microsoft.Net.Compilers.props。

啓用nuget插件

image

默認會nuget得到第三方的包,可能由於nuget被牆的緣由,須要多試幾回下載有本地的環境就能夠了

image

遇到的一些問題:

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/

相關文章
相關標籤/搜索