持续集成总结模板 持续集成的基本原则 您所在的位置:网站首页 持续集成的基本原则 持续集成总结模板 持续集成的基本原则

持续集成总结模板 持续集成的基本原则

2024-07-14 13:41| 来源: 网络整理| 查看: 265

1、什么是持续集成及相关工具大师Martin Fowler对持续集成是这样定义的: 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少

集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,

发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少

集成的问题,让团队能够更快的开发内聚的软件。 一些原则:1. 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他

们的变更不会导致持续集成失败。2. 开发人员每天至少向版本控制库中提交一次代码。3. 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。5. 每次构建都要100%通过。6. 每次构建都可以生成可发布的产品。7. 修复失败的构建是优先级最高的事情。

持续集成工具:主要有cruisecontrol.net(开源)和vsts(微软)

cc.net说明:它是cruisecontrol的.net版本。本软件开源免费。它只是一个持续集成中的一个架构性软件。它要和其它相关软件结合使用才能发挥作用。如版本管理工具svn、编译工具msbuild、代码检查工具fxCop、单元测试工具nuit.netcc.net负责把这些工具串连起来共同作用。

2、安装

cc.net 分服务器软件和客户端软件环境:

服务器端:安装.net FrameWork:具体版本根据cc.net的版本而定。安装IIS:cc.net包含WEB应用

环境很重要,我就吃了这个苦头,一开始照着其他人的方法,就是执行不了,原来是我公司的

机器的环境有些问题,没装iis。后来装了iis,iis还是有问题,没有办法,只好用自己的笔

记本重新安装了环境。 安装顺序:IIS->.NET->others 首先安装IIS,用测试页面检测IIS无误后,安装VS2005,然后再安装cruisecontrol.net,从

控制面板进入IIS控制界 面。检查有无名为ccnet的虚拟目录,如果有正常,右键浏览,应该

可以看到cruisecontrol.net的default页面。 环境很重要,我就吃了这个苦头,一开始照着其他人的方法,就是执行不了,原来是我公司的

机器的环境有些问题,没装iis。后来装了iis,iis还是有问题,没有办法,只好用自己的笔

记本重新安装了环境。 安装顺序:IIS->.NET->others 首先安装IIS,用测试页面检测IIS无误后,安装VS2005,然后再安装cruisecontrol.net,从

控制面板进入IIS控制界 面。检查有无名为ccnet的虚拟目录,如果有正常,右键浏览,应该

可以看到cruisecontrol.net的default页面。 

客户端:安装.net FrameWork:具体版本根据cc.net的版本而定。

然后安装CruiseControl.NET Tray【以下简称CCTray】来监视每次提交后的编译状态。CCTray是一个工具,通过它可以强制执行编译,当然也可以自动编译,然后查看编译的结果。 在服务中找到【cruisecontrol.net server】这项,并启动他。 注意:如果想用浏览器查看cruisecontrol界面,必须关闭迅雷等占用8080端口的程序。

 

3、配置(CruiseControl.Net+SVN+MSBuild自动编译环境)

配置CruiseControl.NET安装目录下(我的机器上是:C:\Program

Files\CruiseControl.NET\server)下的ccnet.config文件,此文件是指定

cruisecontrol.net 怎么运行的,文件中是有关于cruisecontrol.net 的配置。

注意:每次改动了ccnet.config文件的话,都要重启【cruisecontrol.net server】服务。

我使用的版本管理器是SVN 1.63 ,编译工具是MSBuild 2010,代码检查工具FXCop1.35,

我写了一个最简单的:

http://127.0.0.1/ccnet f: C:\Program Files\Subversion\bin\svn.exe liuli liuli svn://192.168.1.100/reponsity/ d:\tmp\ ingDirectory> Painter.sln /noconsolelogger /p:Configuration=Debug 15

 说明:项目节点,支持多个项目之间写的是从服务器上获得代码的过程,具体指定使用的

是哪种源代码管理工具。

是触发器。

这两个加起来的作用是:每个10秒中检测服务器上代码是否有改动,如果有,则更新文件到客

户端。

 是任务

是要进行编译的任务,msbuild还有发布的功能,后面的例子中会有说明

我的项目配置说明:

我有两个项目进行持续集成。一个test web应用,一个解决方案内有多个子项目。要求:每个项目能够自动从源代码管理器svn中获取最新代码,然后进行编译,进行代码检查

,最后进行发布。配置文件如下:

C:\DailyBuild C:\DailyBuild\log\buildlogs http://192.168.0.151/ccnet/server/local/project/TestSystem/ViewProjectRepo rt.aspx 2 http://192.168.0.151:8080/svn/test C:\DailyBuild\test C:\Program Files\VisualSVN Server\bin\svn.exe admin 123456 True C:\windows\Microsoft.NET\Framework\v4.0.30319 \MSBuild.exe C:\DailyBuild\test WebApplication2.csproj /t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:\publish /p:OutputPath=C:\publish\bin /v:diag Build ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll 180 C:\Program Files\Microsoft FxCop 1.35 \FxCopCmd.exe C:\DailyBuild\fxCops\ /p:"test.FxCop" /out:"C:\DailyBuild\log\buildlogs\FxCop-results.xml" /gac 120 C:\DailyBuild\log\buildlogs\FxCop-results.xml [email protected] BestSim True Always C:\DailyBuild C:\DailyBuild\log\FrameWorkLogs\ http://192.168.0.151/ccnet/server/local/project/FrameWorkSystem/ViewProjec tReport.aspx 2 http://192.168.0.151:8080/svn/FrameWork C:\DailyBuild\FrameWork C:\Program Files\VisualSVN Server\bin\svn.exe admin 123456 True C:\windows\Microsoft.NET\Framework\v4.0.30319 \MSBuild.exe C:\DailyBuild\FrameWork\SQLServerDAL\ FrameWork.SQLServerDAL.csproj /t:build /p:Configuration=Release /p:OutputPath=C:\publish\FrameWork\bin /v:diag Build ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll 120 C:\windows\Microsoft.NET\Framework\v4.0.30319 \MSBuild.exe C:\DailyBuild\FrameWork\WebManage\ FrameWork.WebManage.csproj /t:ResolveReferences;build /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:\publish\FrameWork\ /p:OutputPath=C:\publish\FrameWork\bin /v:diag Build ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll 600 --> [email protected] BestSim True Always

说明:第一个projectTestSystem。是个测试项目,web应用程序。工作目录项目日志输出目录指定源代码管理器为svn.http://192.168.0.151:8080/svn/test项目源代码地址【注意了】在这个地方我花了多少时间来配置。1)、网上大多的svn配置都是老版本。地址类型为svn:XXX/XXX。而我的svn为1.63版本,使用

的是WEB发布方式,地址类型为http://server.cm/svn/xxxx。这个地址就是svn项目的地址。2)、默认使用SSH(https)。但我搞半天也没搞清楚。就改Svn配置,直接使用http了。

我使用每隔6000秒检查一次是否有新版本,如果有就签出新版本,进行编译,发布

等。:负责编译,发布。。关于发布使用这两个属性就完全搞定了 /t:ResolveReferences  :指定编译包含的引用/t:_CopyWebApplication:指定发布,拷贝web应用文件/p:WebProjectOutputDir=C:\publish\FrameWork\ :指定拷贝地址/p:OutputPath=C:\publish\FrameWork\bin :指定编译后的bin输出地址

指定集成结果发送邮件到指定用户邮件中

第二个project。此包含7个类项目,一个web项目,但最后要发布是web项目。此处要注意两点:1)、项目之间的引用最好使用项目引用方式,不要直接引用dll。这样就可以只编译web项目。

msbuild会自己编译引用的其它项目。2)、有3个类项目没有被web项目直接引用。使用的反射机制。所以编译web项目时,不会自动

编译这三个项目。但这三个项目中有一个引用了另两个。最后再多编译一个项目就行了。如上

我有两个节

4、注意事项及常见问题1)、清楚项目间的引用关系2)、间接引用项目的输出路径要指定到发布后的相关位置上。

5、相关资源

1)cc.net官网地址:http://sourceforge.net/projects/ccnet/2)cc.net参考手册

3)ccnet.config的配置工具 http://ccnetconfig.codeplex.com/4)其它参考介绍比较全的文章 http://tech.it168.com/m/2008-05-04/200805042108206.shtml



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有