持续集成(CI)- TeamCity实战概览

简介: 之所以选择TeamCity,有以下几个原因: Ø 这个软件对于小团队可以免费使用 Ø 安装配置比较简单,系统的要求不是很高(相比VS 2010 TFS) Ø 使用和配置比Cc.net简单一些 Ø 包含了重复代码的检测和分析工具 一、SVN安装 SVN服务安装 http://www.

之所以选择TeamCity,有以下几个原因:

Ø 这个软件对于小团队可以免费使用

Ø 安装配置比较简单,系统的要求不是很高(相比VS 2010 TFS)

Ø 使用和配置比Cc.net简单一些

Ø 包含了重复代码的检测和分析工具

一、SVN安装

SVN服务安装 http://www.visualsvn.com/files/VisualSVN-Server-2.1.7.msi

clip_image002

SVN客户端

TortoiseSVN

VisualSVN-2.0.5.msi

clip_image004

二、TeamCity安装

http://www.jetbrains.com/teamcity/ 下载 TeamCity-6.0.3.exe

三、TeamCity实战

如下把涉及到的多个方面简要汇总一下,具体的内容可以试用一下,或者从参考中下载图书的代码内容分析。一般的项目也不会全部涉及,根据项目的情况和内容裁减即可。

1、建立CI项目

默认的ci管理网址在 http://localhost/

按照提示建立项目即可

成功后即可建立各种类型的Build

2、NUnit、覆盖率测试

TeamCity comes with built-in functionality for NCover and PartCover. To use PartCover, you have to set it up on the Build Configuration page.

First, enable NUnit Tests (mark the flag in New Unit Test Settings). Set it to run the tests from

%system.teamcity.build.workingDir%\CiDotNet.Calc.Test\bin\Release\CiDotNet.Calc.Test.dll.

Go to the .NET Coverage section, choose PartCover from the drop-down list, and provide the path to the executables in the lib directory

(%system.teamcity.build.workingDir%\lib\PartCover\PartCover.exe).

Report XSLT:

C:\Program Files (x86)\PartCover\PartCover .NET 4.0\xslt\Report By Assembly.xslt=> PartCover.Assembly.html

C:\Program Files (x86)\PartCover\PartCover .NET 4.0\xslt\ Report By Class.xslt=> PartCover.Class.html

PartCover在64位下执行的方法

CorFlags.exe PartCover.exe /32BIT+ /Force

3、MSTest测试MSBuild形式

<Project DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<PropertyGroup>

<!--Default Configuration-->

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

<!--Default Platform-->

<Platform Condition=" '$(Platform)' == '' ">"Any CPU"</Platform>

<!--Visual Studio path-->

<VSPath Condition=" '$(VSPath)' == '' ">%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE</VSPath>

<!--Asseblies to test-->

<TestAssemblies>CiDotNet.Calc.Test\bin\$(Configuration)\CiDotNet.Calc.Test.dll</TestAssemblies>

</PropertyGroup>

<Target Name="Build" >

<MSBuild Targets="Clean;Rebuild" Projects="CiDotNet.sln" ContinueOnError="false"/>

</Target>

<Target Name="Test" DependsOnTargets="Build">

<Delete Condition="Exists('MSTestReport.trx')" Files="MSTestReport.trx"></Delete>

<Exec Command="&quot;$(VSPath)\MSTest.exe&quot; /testcontainer:$(TestAssemblies) /resultsfile:MSTestReport.trx"/>

<Message Text="##teamcity[importData type='mstest' path='MSTestReport.trx']" ></Message>

</Target>

</Project>

clip_image006

clip_image008

clip_image010

4、MSTest

MSTest.exe 命令行选项

http://msdn.microsoft.com/zh-cn/library/ms182489.aspx

· Build Log

[16:26:40]: 测试设置: 本地

[16:26:42]: ##teamcity[importData id='mstest' file='D:\pm\TeamCity\buildAgent\work\eea58b62b6f4c74d\MSTestReportX.trx']

[16:26:42]: Importing data from 'D:\pm\TeamCity\buildAgent\work\eea58b62b6f4c74d\MSTestReportX.trx' with 'mstest' processor

[16:26:42]: MSTest

[16:26:42]: [MSTest] Found 1 test definitions.

[16:26:42]: [MSTest

找到MSTestReportX.trx文件,VS打开即可看到覆盖率

clip_image012

5、Integration tests

不像单元测试,尽量减少组件之间的关联,依赖的组件使用Mock框架进行模拟

此时引入相关的依赖组件,替换掉Mock

6、其他测试

参考中图书第7章的例子代码拿来用用

涉及:

White框架

CiDotNet.WinCalc.Test: WinForm的测试

CiDotNet.SilverlightCalc.Test: Silverlight的测试

Selenium框架 http://seleniumhq.org/

CiDotNet.WebCalc.Test

8、代码规范

这部分主要是修改项目文件,支持Build,然后提供信息反馈处,具体的设置参考如下

FxCop

使用Fxcop的项目进行集成, *.fxcop 是项目文件

<Target Name="Analyze">

<Delete Condition="Exists('FxCopReport.xml')" Files="FxCopReport.xml"></Delete>

<FileUpdate Files="CiDotNet.FxCop" Regex="bin/Debug" ReplacementText="bin/$(Configuration)" />

<Exec Command="tools\FxCop\FxCopCmd.exe /project:CiDotNet.FxCop /out:FxCopReport.html /axsl"/>

<Error Condition="Exists('FxCopReport.xml')" Text="FxCop found some broken rules!" />

define a new artifact FxCopReport.html and a new tab server configuration.

StyleCop

<Project DefaultTargets="Analyze" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<UsingTask AssemblyFile="tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll" TaskName="MSBuild.Community.Tasks.FileUpdate"></UsingTask>

<UsingTask AssemblyFile="tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll" TaskName="MSBuild.Community.Tasks.Xslt"></UsingTask>

<UsingTask AssemblyFile="tools\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll" TaskName="MSBuild.Community.Tasks.XmlRead"></UsingTask>

<UsingTask AssemblyFile="tools\StyleCop\Microsoft.StyleCop.dll" TaskName="StyleCopTask"/>

<CreateItem Include="CiDotNet.Calc\**\*.cs">

<Output TaskParameter="Include" ItemName="StyleCopFiles"/>

</CreateItem>

<StyleCopTask

ProjectFullPath="$(MSBuildProjectFile)"

SourceFiles="@(StyleCopFiles)"

ForceFullAnalysis="true"

TreatErrorsAsWarnings="true"

OutputFile="StyleCopReport.xml"

CacheResults="true"

AdditionalAddinPaths="tools\"

/>

<Xslt Inputs="StyleCopReport.xml"

RootTag="StyleCopViolations"

Xsl="tools\StyleCop\StyleCopReport.xsl"

Output="StyleCopReport.html" />

<XmlRead XPath="count(//Violation)"

XmlFileName="StyleCopReport.xml">

<Output TaskParameter="Value" PropertyName="StyleCopViolations" />

</XmlRead>

<Error Condition="$(StyleCopViolations) > 0" Text="StyleCop found some broken rules!" />

add the artifact file, and a new tab appears in the build report page

代码重复

Its purpose is to find the places in your code where your team has duplicated the code.

The Duplicates Finder is a separate build runner in TeamCity.

clip_image014

9、文档

基于Sandcastle 的形式

<Target Name="Document" >

<MSBuild Projects="CiDotNet.shfbproj"/>

</Target>

TeamCity project’s General Settings, and set the Artifacts path to

Help/**/* => Help

This causes all the Help folder content from the current build to be copied to the Help artifacts folder. To make the documentation visible on the build-report page,add a new tab in the server configuration, pointing to /Help/Index.html.

10、安装和部署

WIX安装

ClickOnce部署

MS Deploy部署

<Target Name="Setup" >

<Exec

Command="&quot;$(VSPath)\devenv.exe&quot; CiDotNet.sln /build &quot;$(Configuration)&quot; /project CiDotNet.WinCalc.Setup\CiDotNet.WinCalc.Setup.vdproj"

ContinueOnError="false" IgnoreExitCode="true"

/>

<MSBuild Projects="CiDotNet.WinCalc.Wix\CiDotNet.WinCalc.Wix.wixproj" Properties="WixTargetsPath=$(MSBuildProjectDirectory)\tools\Wix\Wix2010.targets;"/>

</Target>

<Target Name="Publish" >

<MSBuild Targets="Publish" Projects="CiDotNet.sln" ContinueOnError="false" Properties="ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision)"/>

</Target>

<Target Name="WebPublish" >

<MSBuild Targets="Package" Projects="CiDotNet.WebCalc\CiDotNet.WebCalc.csproj" ContinueOnError="false" Properties="PackageLocation=WebPublication\Package.zip;MSBuildExtensionsPath32=..\tools"/>

<Exec

Command="CiDotNet.WebCalc\WebPublication\Package.deploy.cmd /Y /m:ci1 /u:administrator /p:Marcinq1p0w2"

ContinueOnError="false" IgnoreExitCode="true"

/>

</Target>

11、数据库集成

这个主要使用VS的数据库项目可以完成

<MSBuild

Projects = "$(SolutionRoot)\NWSandbox.dbproj"

Properties = "Configuration=Debug; TargetDatabase=NewDBName"

Targets = "Deploy"/>

四、参考

图书Continuous Integration in .NET http://www.manning.com/kawalerowicz/ 下载CIi.N_SourceCode.zip

其中包括VS的Build脚本等,在TFS的持续集成中可以参考

http://www.cnblogs.com/2018/category/300477.html

相关文章
|
6天前
|
测试技术 持续交付 开发工具
《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)
《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)
44 2
|
6天前
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
164 2
|
6天前
|
存储 测试技术 持续交付
自动化测试与持续集成/持续交付(CI/CD):优化软件开发流程的利器
自动化测试与持续集成/持续交付(CI/CD)是现代软件开发中至关重要的环节,通过将自动化测试与持续集成/持续交付相结合,可以实现开发流程的高效优化,提高软件质量和交付速度。本文将探讨自动化测试与CI/CD的概念、原理及其在软件开发中的重要性,以及如何实施这些技术以提升团队的协作效率和软件交付质量。
70 1
|
3天前
|
敏捷开发 运维 监控
深入探索软件测试中的持续集成与持续部署(CI/CD)实践
【5月更文挑战第17天】 在现代软件开发过程中,"持续集成"(Continuous Integration, CI)和"持续部署"(Continuous Deployment, CD)已经成为提高开发效率、确保代码质量和加速产品上市速度的关键策略。本文将深入探讨CI/CD在软件测试中的应用,包括它们的定义、目的、实施策略以及面临的挑战。通过对自动化测试、版本控制、构建流程和反馈循环的详细分析,我们将揭示如何利用CI/CD实践来优化测试流程,减少错误,并确保高质量的软件交付。
|
6天前
|
运维 监控 Kubernetes
构建高效自动化运维体系:基于容器技术的持续集成与持续部署(CI/CD)实践
【5月更文挑战第15天】 随着云计算和微服务架构的普及,传统的IT运维模式面临转型压力。为提高软件交付效率并降低运维成本,本文探讨了利用容器技术实现自动化运维的有效策略。重点分析了在持续集成(CI)和持续部署(CD)流程中,容器如何发挥作用,以及它们如何帮助组织实现敏捷性和弹性。通过具体案例研究,文章展示了容器化技术在自动化测试、部署及扩展中的应用,并讨论了其对系统稳定性和安全性的影响。
|
6天前
|
运维 监控 安全
构建高效自动化运维系统:基于容器技术的持续集成与持续部署(CI/CD)实践
【5月更文挑战第14天】 随着DevOps文化的深入人心,持续集成与持续部署(CI/CD)已成为现代软件工程不可或缺的组成部分。本文将探讨如何利用容器技术,尤其是Docker和Kubernetes,构建一个高效、可扩展的自动化运维系统。通过深入分析CI/CD流程的关键组件,我们将讨论如何整合这些组件以实现代码从提交到生产环境的快速、无缝过渡。文章还将涉及监控、日志管理以及安全性策略等运维考量,为读者提供一个全面的自动化运维解决方案蓝图。
|
6天前
|
敏捷开发 监控 Devops
深入探索软件测试中的持续集成与持续部署(CI/CD)实践
【5月更文挑战第13天】 在现代软件开发的快节奏和复杂性中,持续集成(Continuous Integration,CI)与持续部署(Continuous Deployment,CD)成为确保软件质量和加速交付的关键策略。本文将深入探讨CI/CD在软件测试中的应用,解析其核心概念、流程以及面临的挑战,并分享实际案例分析以揭示如何在不断变化的开发环境中维持高效和可靠的软件发布周期。
|
6天前
|
机器学习/深度学习 敏捷开发 监控
深入探索软件测试中的持续集成与持续部署(CI/CD)实践
【5月更文挑战第10天】 在现代软件开发周期中,"持续集成"(CI)与"持续部署"(CD)是提升效率、确保质量的重要环节。本文将详细探讨CI/CD在软件测试中的应用,包括其基本概念、实施策略、工具应用及面临的挑战。不同于一般性概述,本文将重点分析如何优化测试流程以适应CI/CD环境,并提出针对性的改进措施。通过实际案例分析,揭示成功实施CI/CD的最佳实践,并讨论如何在不断变化的技术环境中保持测试策略的前瞻性和灵活性。
|
6天前
|
运维 测试技术 持续交付
持续集成与持续部署(CI/CD):提高软件开发效率的关键实践
【5月更文挑战第8天】CI/CD是提升软件开发效率的关键实践,包括持续集成和持续部署。CI通过频繁集成代码并自动化构建、测试,早发现错误;CD则自动将通过测试的App部署到生产环境,缩短交付周期。自动化流程能降低人为错误,保障软件质量,减少运维成本。Jenkins、Travis CI、GitLab CI/CD和Docker是常见的CI/CD工具。通过这些工具和实践,可优化开发流程,推动项目成功。
|
6天前
|
存储 测试技术 持续交付
【Docker 专栏】Docker 与 CI/CD 的集成策略
【5月更文挑战第8天】本文探讨了Docker在CI/CD流程中的作用,强调了环境一致性、快速部署和资源隔离等优势。通过在构建、测试和部署阶段集成Docker,可以提升软件开发效率和质量。具体集成策略包括使用Dockerfile构建镜像、整合CI/CD工具如Jenkins和GitLab。集成带来的好处包括提高效率、增强可靠性、加速交付和简化管理。然而,也需应对镜像管理、网络配置和安全等问题。通过案例分析,证明了Docker与CI/CD集成的有效性和必要性。
【Docker 专栏】Docker 与 CI/CD 的集成策略

热门文章

最新文章