您现在的位置是:首页 > 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可以把单元测试也加入进来,这样每次编译后,自动生成单元测试报告,编码规范报告,真的是非常的方便。
本文标签:
很赞哦! ()
相关教程
- Fluent M3U8
- PHP html_entity_decode()函数:HTML实体还原字符教程
- PHP htmlentities()函数:字符转HTML实体教程
- PHP fprintf()函数:格式化字符串写入流指南
- PHP count_chars()函数:字符频率统计与模式选择
- PHP array_uintersect_uassoc函数详解:键与值双重自定义回调的交集运算
- PHP array_uintersect函数详解:自定义回调驱动的多数组值交集运算
- PHP array_uintersect_assoc函数详解:带键名校验的自定义交集运算
- PHP sizeof()函数教程:数组元素计数、count()别名关系与递归统计实战
- PHP pos()函数:current()的别名,读取数组当前指针元素
- Bento Grid Generator
- Cover Paint
图文教程
discuz去掉portal.php的方法
discuz去掉“portal.php”的方法:首先在系统后台的导航设置中将默认的首页设置为“不可用”;然后打开“index.php”并修改内容为“$_ENV['domain']['defaultindex']”即可。
Discuz! X系列UC_Server本地文件包含漏洞
最近又发现discuz论坛被挂马了,决定好好研究一下discuz的漏洞,技术债始终要还是要还的快要睡觉的时候,突然收到一封邮件,发现服务器上的文件被篡改了,立即登录服务器,清空恶意文件,
discuz x3.1论坛搬家换域名的方法
请关闭论坛,尤其是数据备份和还原时请不要操作论坛。进入后台→站长→数据库→备份,备份成功以后,数据保存在 data/backup_**。
Discuz密码加密方式是怎么样的?
一般我们的加密都是采用md5加密方式:md5(变量)。但是昨天需要整合discuz的论坛,看他的加密方式也像是md5,但是简单的123加密后竟然解密不出来。
相关源码
-
(自适应)蓝色厨卫厨房水龙头阀门水槽设备源码下载基于PbootCMS内核开发,深度适配厨卫设备行业特性。通过精准的产品展示模块与水效标识专区设计,有效呈现五金件工艺细节。响应式布局确保从手机到平板都能展示金属质感与水流动态效果。查看源码 -
(自适应)简繁双语响应式服装服饰西装工装校服定制pbootcms模板本模板基于PbootCMS内核开发,为服装服饰行业量身打造,尤其适合西装定制、工装生产、校服订制等服装类企业使用。模板采用响应式布局设计,确保在手机、平板、电脑查看源码 -
宽屏自适应搬家家政快递物流公司网站模板该宽屏大气的响应式网站模板专为搬家公司、家政服务及物流快递企业设计,基于PbootCMS内核开发,通过自适应布局确保手机、PC等多终端体验一致,助力企业高效构建专业在线服务平台。查看源码 -
自适应LED照明外贸灯具灯泡灯具英文网站模板该外贸灯具网站模板专为LED照明、灯具出口企业定制,采用PbootCMS内核开发,提供高效建站方案。通过响应式设计和SEO优化能力,帮助企业低成本构建专业外贸展示平台。查看源码 -
(自适应响应式)html5高档服装定制西服pbootcms模板下载本模板基于PbootCMS内核开发,为服装定制企业和服装品牌量身打造。设计风格时尚现代,充分展现服装行业的审美特质与品牌魅力。采用HTML5响应式技术,确保在各种设备上呈现视觉效果。整站布局注重产品展示与品牌叙事,帮助企业有效展示服装系列与定制服务,提升客户体验。查看源码 -
(PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码
| 分享笔记 (共有 篇笔记) |
