您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz的NT持续集成实战
以山2025-06-24Discuz教程已有人查阅
导读从SVN中取出源代码到e:\source,编译后发布项目到e:\publish,可直接在IIS中运行。编译状态发送email通知相关人员。软件环境:(以下软件的安装过程非常简单,基本上一路Next就可以了。)
CruiseControl.net持续集成(ContinuousIntegration)每日构建(DailyBuild)Discuz!NTSVN
操作系统:win2003
版本控制:Subversion
程序编译:MSBuild
代码规范检查:Fxcop
目标:从SVN中取出源代码到e:\source,编译后发布项目到e:\publish,可直接在IIS中运行。编译状态发送email通知相关人员。软件环境:(以下软件的安装过程非常简单,基本上一路Next就可以了。)
CruiseControl.net
下载:ccnet.thoughtworks.com
安装目录:c:\C:\ProgramFiles\
Fxcop
下载:http://.microsoft.com/downloads/details.aspx?FamilyID=3389f7e4-0e55-4a4d-bc74-4aeabb17997b&DisplayLang=en
安装目录:c:\ProgramFiles\MicrosoftFxCop1.36
Subversion(SVN)下载:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
安装目录:c:\ProgramFiles\
环境配置主要的配置文件有三个分别是:配置文件说明文件位置生成方式
ccnet.config配置CruiseControl.net已经存在
DailyBuild.msbuild配置MSBuild编译目标项目手动生成
DiscuzNT.DailyBuild.FxCop配置Fxcop的检查目标E:\DailyBuild\DiscuzNT.DailyBuild.FxCopFxcop工具生成
publish.bat用户发布的批处理手动生成
filelist.txt对publish.bat的配置手动生成
配置CruiseControl.net(编辑CruiseControl.net的配置文件ccnet.config,其内容如下)
FxCop的配置文件DiscuzNT.DailyBuild.FxCop可以通过FxCop的GUI工具生成,保存到E:\DailyBuild目录下。主要是选择检查目标然后选择配置文件保存位置,这个在此不详述。
编写发布批处理publish.bat内容如下:
因此,本来我只是想不复制.cs文件,可是却连.css文件也不复制了。为了解决这个问题.cs后面需要一个"\"。
常见问题
编译成功能收到email通知,可是编译失败时却没有email通知
答:这个常见问题是因为把<email>配置节写在了<tasks>配置节里面,这样当编译失败时,流程从<tasks>中跳出,导致后面的<email>根本没有执行,解决方法就是把<email>放到<publishers>下。
生成的日志文件过大,在浏览器中查看buildreport的时候,浏览器就死掉了
答:注意MSBuild的编译参数<buildArgs>DailyBuild.msbuild/p:Configuration=Debug/v:q</buildArgs>其中/v:q指定了输出日志的级别,自己查看一下MSBuild的/v参数的说明就明白了。
后记:有了DailyBuild,我们可以在开发人员提交修改后,立刻生成一个可测试版本发布到IIS中,然后展示给用户看也好,开展黑盒测试也好,都非常方便,而且使用CruiseControl.net可以把单元测试也加入进来,这样每次编译后,自动生成单元测试报告,编码规范报告,真的是非常的方便。
操作系统:win2003
版本控制:Subversion
程序编译:MSBuild
代码规范检查:Fxcop
目标:从SVN中取出源代码到e:\source,编译后发布项目到e:\publish,可直接在IIS中运行。编译状态发送email通知相关人员。软件环境:(以下软件的安装过程非常简单,基本上一路Next就可以了。)
CruiseControl.net
下载:ccnet.thoughtworks.com
安装目录:c:\C:\ProgramFiles\
Fxcop
下载:http://.microsoft.com/downloads/details.aspx?FamilyID=3389f7e4-0e55-4a4d-bc74-4aeabb17997b&DisplayLang=en
安装目录:c:\ProgramFiles\MicrosoftFxCop1.36
Subversion(SVN)下载:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91
安装目录:c:\ProgramFiles\
环境配置主要的配置文件有三个分别是:配置文件说明文件位置生成方式
ccnet.config配置CruiseControl.net已经存在
DailyBuild.msbuild配置MSBuild编译目标项目手动生成
DiscuzNT.DailyBuild.FxCop配置Fxcop的检查目标E:\DailyBuild\DiscuzNT.DailyBuild.FxCopFxcop工具生成
publish.bat用户发布的批处理手动生成
filelist.txt对publish.bat的配置手动生成
配置CruiseControl.net(编辑CruiseControl.net的配置文件ccnet.config,其内容如下)
<cruisecontrol>
<project name="Discuz!NT3" webURL="http://10.0.3.4/ccnet/server/local/project/Discuz!NT3/ViewLatestBuildReport.aspx">
<workingDirectory >e:\source</workingDirectory>
<artifactDirectory>E:\DailyBuild\Log\3</artifactDirectory> <!-- 编译日志生成路径 -->
<labeller type="dateLabeller"></labeller>
<sourcecontrol type="svn"> <!-- 版本控制系统的类型 -->
<trunkUrl>https://code.comsenz.com/</trunkUrl> <!-- SVN的地址 -->
<workingDirectory>e:\source</workingDirectory> <!-- 把源代码检出到该目录 -->
<executable>c:\Program Files\Subversion\bin\svn.exe</executable> <!-- svn.exe所在路径 -->
<username>svnuser</username> <!-- 登录svn的用户名和密码 -->
<password>123</password>
</sourcecontrol>
<tasks>
<exec>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable> <!-- MSBuild.exe 文件所在路径 -->
<baseDirectory>e:\source</baseDirectory> <!-- 对 e:\source 目录下的内容进行编译,实际上是解决方案文件或者msbuild文件所在目录-->
<buildArgs>DailyBuild.msbuild /p:Configuration=Debug /v:q</buildArgs> <!-- 编译参数 不懂的查MSBuild的帮助 -->
<buildTimeoutSeconds>1200</buildTimeoutSeconds> <!-- 编译超时时间 -->
</exec >
<exec executable="E:\DailyBuild\publish.bat"/> <!-- 编译后执行的批处理文件路径,该批处理文件用于项目发布 -->
<merge> <!-- 此节用于合并Fxcop生成的日志 到 编译日志里,最终作为Build Report -->
<files>
<file>E:\DailyBuild\log\3\DailyBuild.FxCop.xml</file> <!-- 该文件的名字是在 publish.bat 中 FxCopCmd命令的参数中指定的 -->
</files>
</merge>
</tasks>
<publishers>
<xmllogger logDir="E:\DailyBuild\Log\3\buildlogs" /> <!-- 编译日志存放路径 -->
<!-- 下面设置编译报告通过email通知相关人员 详细信息参考cc.net的帮助-->
<email from="admin@163.com" mailhost="smtp.163.com" mailhostUsername="admin" mailhostPassword="123" includeDetails="true">
<users>
<user name="dachuan" group="buildmaster" address="dachuan@163.com"/>
</users>
<groups>
<group name="buildmaster" notification="always"/>
</groups>
</email>
</publishers>
<triggers> <!-- 该触发器控制周一到周五的23点到0点的时间段内进行编译,每900秒检查一次svn有无更新 ,如果有就取出并编译-->
<filterTrigger startTime="08:00" endTime="23:00">
<trigger type="filterTrigger" startTime="23:00:00" endTime="23:59:59">
<trigger type="intervalTrigger" name="continuous" seconds="900" />
<weekDays>
<weekDay>Saturday</weekDay>
<weekDay>Sunday</weekDay>
</weekDays>
</trigger>
</filterTrigger>
</triggers>
</project>
</cruisecontrol>
配置MSBuild(将MSBuild的配置文件DailyBuild.msbuild放到和VS解决方案文件同级目录中,其内容如下)
<!-- 该文件与VS解决方案文件在同一目录 --> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Build"> <MSBuild Projects="Discuz_vs08.sln" Targets="Clean;Rebuild"/> </Target> </Project>
配置DiscuzNT.DailyBuild.FxCopFxCop的配置文件DiscuzNT.DailyBuild.FxCop可以通过FxCop的GUI工具生成,保存到E:\DailyBuild目录下。主要是选择检查目标然后选择配置文件保存位置,这个在此不详述。
编写发布批处理publish.bat内容如下:
xcopy e:\source e:\publish /E /y /D /EXCLUDE:E:\DailyBuild\filelist.txt
cd c:\Program Files\Microsoft FxCop 1.36
c:
FxCopCmd /project:E:\DailyBuild\DiscuzNT.DailyBuild.FxCop /out:E:\DailyBuild\log\3\DailyBuild.FxCop.xml
其中xcopy的参数/D指定了不复制修改日期相同的文件,这样就只把原时间比目标文件新的文件复制过来,减少了复制压力。/EXCLUDE参数中指定的filelist.txt文件中记录的是不需要复制的目录或文件,具体用法网上有很多资料。其内容如下:
.cs\
\_svn
\.svn
.csproj\
.sln\
.pdb\
.bat\
filelist.txt
.bak\
.user\
obj\
dnt.config\
其中有个技巧,例如.cs\这个包含一个"\",如果不写这个"\",那么所要文件名中包含"cs"的文件都不会被复制,因此,本来我只是想不复制.cs文件,可是却连.css文件也不复制了。为了解决这个问题.cs后面需要一个"\"。
常见问题
编译成功能收到email通知,可是编译失败时却没有email通知
答:这个常见问题是因为把<email>配置节写在了<tasks>配置节里面,这样当编译失败时,流程从<tasks>中跳出,导致后面的<email>根本没有执行,解决方法就是把<email>放到<publishers>下。
生成的日志文件过大,在浏览器中查看buildreport的时候,浏览器就死掉了
答:注意MSBuild的编译参数<buildArgs>DailyBuild.msbuild/p:Configuration=Debug/v:q</buildArgs>其中/v:q指定了输出日志的级别,自己查看一下MSBuild的/v参数的说明就明白了。
后记:有了DailyBuild,我们可以在开发人员提交修改后,立刻生成一个可测试版本发布到IIS中,然后展示给用户看也好,开展黑盒测试也好,都非常方便,而且使用CruiseControl.net可以把单元测试也加入进来,这样每次编译后,自动生成单元测试报告,编码规范报告,真的是非常的方便。
本文标签:
很赞哦! ()
相关教程
- FolderPainter
- ContextMenuManager
- JavaScript数字的toExponential()方法
- JavaScript Number.parseInt()方法:将字符串解析为整数
- JavaScript Number.isInteger()方法:精确判断整数类型
- JavaScript Proxy的preventExtensions:对象锁定机制的精确保留
- JavaScript Map entries()方法
- JavaScript addEventListener
- Print Distributor
- Style2Paints
- JavaScript document.getElementsByTagName()
- document.getElementsByName()
图文教程
xampp搭建discuz论坛的方法
1.浏览器中输入http://localhost:80/phpmyadmin/,或者点击mysql的admin,进入mysql数据库2.new->create,创建数据库3.浏览器中输出localhost:80/bbs
discuz个人空间主题列表图片模式实现方法代码实例
discuz X3空间主题列表 图片展现模式,discuz实现个人空间主题列表调用图片模式,discuz home图片列表如果需要实现该呈现方式,我们需要首先了解discuz封面图片存储原理:
Linux搭建discuz论坛步骤方法教程
Discuz是腾讯旗下的专业建站平台,可以帮助网站实现一站式服务,非常方便,那么你知道在Linux平台下如何搭建discuz论坛吗?
基于Discuz&Memcache缓存实现方法
在PHP+MySQL架构的站点中,本文重点从MySQL的角度去分析如何使Discuz!论坛(或者类似的PHP+MySQL架构的程序)应对大访问 量。同时给出一些使用Memcache去减轻MySQL压力的建议。其
相关源码
-
(自适应)摄像头安防电子设备pbootcms源码下载本模板基于PbootCMS系统开发,为安防电子设备企业设计,特别适合监控摄像头、安防系统等产品的展示。采用响应式技术,确保各类设备参数和功能在不同终端上都能清晰呈现。查看源码 -
(PC+WAP)红色家装设计智能家居家具建材pbootcms网站源码下载本模板基于PbootCMS系统开发,为智能家居、家装设计及家具建材行业设计。采用现代化布局风格,突出家居设计行业特色,适合展示各类家居产品、设计方案和建材信息。查看源码 -
(PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码 -
(自适应)帝国cms7.5模板新闻资讯门户带会员中心基于帝国CMS7.5内核开发的HTML5响应式模板,为新闻机构、媒体门户及资讯聚合平台设计。通过模块化布局实现图文混排查看源码 -
(PC+手机)帝国cms7.5漫画图片连载网站源码免费下载本模板基于帝国CMS7.5深度开发,为漫画阅读类网站打造。整体设计风格贴合漫画行业特性,界面布局充分考虑漫画作品的展示需求,支持多种漫画阅读模式。模板采用响应式设计,能够自动适配PC端和移动端设备,为读者提供流畅的阅读体验。查看源码 -
(PC+WAP)门窗门业家居定制铝合金产品pbootcms模板下载基于PbootCMS内核开发的门窗门业企业专用模板,采用响应式设计结构,数据一次录入即可同步适配电脑与手机端浏览。通过简洁大气的视觉呈现,帮助门窗企业快速建立专业线上展示平台,有效传递产品价值与服务优势。查看源码
| 分享笔记 (共有 篇笔记) |
