CCNET自动构建之路
人永远追求效率(想偷懒),不想手动编译项目、发布站点于是产生了自动构建技术,.NET领域中CCNET是个不错的选择。
一路问题不少,记录一下。
- 准备环境
- 服务器上需要有iis、vs(与开发环境的版本一致)。
- 安装svn,如果是TortoiseSVN,安装时记得选择安装命令行。
- 安装CCNET,下载地址:http://build.nauck-it.de/download/CruiseControl.NET-package/1.8.5.0/。
- 可能出现的问题:
- 没有自动在iis上创建站点。我安装时也出现这个问题,原因是文件访问权限不够,没有仔细看是要哪个用户,直接把C:\Program Files (x86)\CruiseControl.NET这个目录给了everyone读写权限,问题解决。然后手动创建站点,站点物理路径:C:\Program Files (x86)\CruiseControl.NET\webdashboard。
- 站点未正常运行。访问刚刚创建的站点有可能出现这样的错误:由于目标计算机积极拒绝,无法连接,127.0.0.1:21234。如果按上面的步骤给了足够的权限仍出现这样的问题,那只能是因为没有启动CruiseControl.NET,运行起来吧!

- 配置
- 配置文件在C:\Program Files (x86)\CruiseControl.NET\server\ccnet.config
- 配置说明:
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<!--定义项目-->
<project name="MentenApi">
<artifactDirectory>D:\xx\xx</artifactDirectory><!--对应的日志会写到这里-->
<!--配置代码源,这里用的是svn-->
<sourcecontrol type="svn">
<executable>C:\Program Files\TortoiseSVN\bin\svn.exe</executable><!--svn的位置,安装TortoiseSVN时记得选择安装命令行-->
<username>test</username><!--svn用户名-->
<password>123456</password><!--svn密码-->
<autoGetSource>true</autoGetSource>
<trunkUrl>https://x.x.x.x/xx</trunkUrl><!--源代码位置-->
<workingDirectory>D:\xx\xx</workingDirectory><!--获取代码的存放位置-->
</sourcecontrol>
<!--触发器-->
<triggers>
<intervalTrigger seconds="300" />
</triggers>
<!--要执行的任务-->
<tasks>
<!--编译-->
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable><!--MSBuild的位置(视.NET的版而定)-->
<buildArgs>/p:OutputPath=D:\xx\x1</buildArgs><!--给MSBuild指定参数,这里指定的编译后的输出目录-->
<workingDirectory>D:\xx\xx</workingDirectory><!--通过svn获取下来的代码位置,与上面sourcecontrol\workingDirectory的值一致-->
<projectFile>xx.sln</projectFile><!--指定解决方案文件-->
<targets>Build</targets>
<timeout>600</timeout><!--编译超时时间,单位秒-->
</msbuild>
</tasks>
</project>
</cruisecontrol>配置
- 为了验证自己的配置文件写的对不对,可以使用C:\Program Files (x86)\CruiseControl.NET\server\CCValidator.exe检查。
- 看效果
- 访问ccnet站点,如果一切正常的话,上面会显示刚刚配置的项目。可以在这里直接手动启动编译。

- 当然,事情不会那么简单,不出意外的话,Force后会告诉你编译失败,具体的原因可以点击左侧链接查看。

- 可能出现的问题:
- 系统找不到指定的文件。这个时候需要确认是否正确安装了svn、vs。
- 编译不通过。可能是使用了NuGet管理dll,需要下载缺少的dll,或者是服务器上没有对应的MVC环境,安装下就好。
- 访问ccnet站点,如果一切正常的话,上面会显示刚刚配置的项目。可以在这里直接手动启动编译。
- 最后
- 一切正常后,可以在编译后的输出目录中找到编译后的文件,同时这个目录下的_PublishedWebsites文件夹也会产生编译好的站点了。
CCNET自动构建之路的更多相关文章
- 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!
写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...
- 使用cmake自动构建工程
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...
- 使用Hudson搭建自动构建服务器
环境: ubuntu1404_x64 说明: 使用hudson和git搭建自动构建服务器的简单示例 安装hudson及相关插件 安装hudson 安装命令如下: sudo sh -c "ec ...
- Windows Server配置Jenkins,实现监测SVN提交自动构建.net4.5的项目
1,持续集成 概念:http://baike.baidu.com/view/5253255.htm,对于大多数人而言,自动构建/自动测试/自动部署,已经很发挥它的价值了.选择上: 推荐jenkins, ...
- 关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用
关于node.js和npm,cnpm的安装记录以及gulp自动构建工具的使用 工作环境:window下 在一切的最开始,安装node.js (中文站,更新比较慢http://nodejs.cn/) ...
- 用Ant实现Java项目的自动构建和部署
原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml 本文请勿转载! Ant是一个Apache基金会下的跨平台的构 ...
- 利用ant脚本 自动构建svn增量/全量 系统程序升级包
首先请允许我这样说,作为开发或测试,你一定要具备这种 本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方式.开发人员提交了代码后,可以自动构建.打包.部署到测试环境. ...
- Yeoman自动构建js项目
Aug 19, 2013 Tags: bowergruntJavascriptjsnodejsyeomanyo Comments: 10 Comments Yeoman自动构建js项目 从零开始nod ...
- 自动构建Makefile(1)--C/C++编译流程&Makefile规则简介
前言: 大家在Windows上使用VS构建C/C++程序时,不需要自己编辑略显晦涩的Makefile文件,而对于初学者而言, 他们甚至没意识到它的存在.VS是自动生成Makefile文件, 并构建 ...
随机推荐
- 【bzoj1053】[HAOI2007]反素数ant
对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6等都是反质数 ...
- vue的过渡动画在除了chrome浏览器外的浏览器下不正常的问题
为过渡动画添加mode="out-in"在其它浏览器下面就能正常的使用了
- touch event 存疑
1.原声js与借用jquery输出来的事件列表却不一样 function touchPlay(e) { e.preventDefault(); console.log(e); } var screen ...
- C#函数多返回值的方法
C#以前都是不支持多返回值,当需要返回多个值的时候,就会感觉比较麻烦,通常的做法有 1.采用ref,out 关键字返回 2.定义类或者结构体 返回对象 C# 6.0出来了新的语法 Tuple 支付返回 ...
- bzoj 3000 Big Number 估算n!在k进制下的位数 斯特林公式
题目大意 求n!在k进制下的位数 2≤N≤2^31, 2≤K≤200 分析 作为数学没学好的傻嗨,我们先回顾一下log函数 \(\log_a(b)=\frac 1 {log_b(a)}\) \(\lo ...
- 2018.8.6 Noip2018模拟测试赛(十九)
日期: 八月六号 总分: 300分 难度: 提高 ~ 省选 得分: 10分(MMP) 题目目录: T1:Tree T2:异或运算 T3:Tree Restoring 赛后反思: Emmmmm ...
- Java-约瑟夫问题(Josephus Problem)
题目: 据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方 ...
- web实时长图实践--摘抄
背景简介 全民K歌专辑发布新玩法,传统宣传专辑战绩的流程,从获取数据,到制作海报,到传播,周期长运营成本高,如何快速分享战绩进行荣誉感的传播成为一个亟待解决的问题. 产品:能不能在专辑大事件触发时,自 ...
- 如果你的css文件这么分类,可维护性大大增强!--摘抄
按照css的性质和用途,我们可以将css文件分成: 公共型样式 特殊型样式 皮肤型样式 并以此为顺序引用. 那么他们分别是什么呢? 公共型样式是最为重要的部分,对于比较小的项目,我们只引入一个css, ...
- touch下拉刷新
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...