所要用的工具:

1、CCNET(用于检测SVN有改动提交时自动构建,并运行nuget的自动打包和推送批处理)

2、ProGet(目前见到最好用的nuget内部包管理平台)

3、Windows Batch(windows的批处理,用于nuget的自动打包和推送)(这里是最难解决的地方)

具体的搭建步骤:

一、先搭建CCNET的持续集成环境,可以参照以下这些文章:

http://www.cnblogs.com/jillzhang/archive/2008/03/03/1089099.html

http://www.cnblogs.com/wangjq/p/3977318.html

http://www.cnblogs.com/cnblogsfans/archive/2008/04/24/1169689.html

这里可以使用配置文件:http://www.cnblogs.com/EasonJim/p/5773328.html

二、配置和安装ProGet进行内部包管理:

下载和安装步骤:http://www.cnblogs.com/EasonJim/p/5486530.html

安装好之后新建几个feed,如下:

其中这里包含的符号服务器所用到的包DebugDefault(Debug模式的包)、ReleaseDefault(Release模式的包)、SymbolsDebugDefault(Debug模式下包含源码的包)、SymbolsReleaseDefault(Release模式下包含源码的包)。

有了这四个,基本上都是只用到Release的两个,其余的都留着以后备用。

其实ProGet不需要过多的配置,只要安装到新建好Feed之后一些都OK了。

注意:这里的ProGet的apikey为这样的形式:用户名:密码;在nuget命令行下用setapikey时用到,比如Admin默认账号密码时是这样使用:nuget -setapikey Admin:Admin

三、编写自动打包的脚本,并完成之后自动推送我们内部四个Feed上,这里我已经写好了批处理,并使用RunNuGetPackage.bat即可,并修改如下自己实际信息,其余的批处理都是看个人需要使用。

GitHub地址:https://github.com/easonjim/NuGetRun

下载回本地之后,根据实际情况配置apikey,已经feed的推送地址,并用一个文件夹的形式放置在项目的根目录,因为批处理上已经用cd..进行上一层的跳转,可根据实际进行修改,如下放置:

四、完成上面步骤之后,可以进行测试,先用RunMSBuild.bat编译以下项目(如果不行,检查里面的参数配置),再进行RunNuGetPackage.bat脚本的运行(如果不行,检查里面的参数配置),都没有问题之后,提交SVN,并用CCNET进行跑一下。

这里提供我配置的项目节点:

   <msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<buildArgs>
    /p:OutputPath=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Debug;Platform="Any CPU";Configuration=Debug;GenerateDocumentation=true;DocumentationFile=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Debug\Easemob.Restfull4Net.xml;DebugSymbols=true
</buildArgs>
<workingDirectory>D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net</workingDirectory>
<projectFile>Easemob.Restfull4Net.csproj</projectFile>
<targets>Build</targets>
<timeout></timeout>
</msbuild>
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<buildArgs>
/p:OutputPath=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Release;Platform="Any CPU";Configuration=Release;GenerateDocumentation=true;DocumentationFile=D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\bin\Release\Easemob.Restfull4Net.xml;DebugSymbols=true
</buildArgs>
<workingDirectory>D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net</workingDirectory>
<projectFile>Easemob.Restfull4Net.csproj</projectFile>
<targets>Build</targets>
<timeout></timeout>
</msbuild>
<exec>
<executable>RunNuGetPackage.bat</executable>
<baseDirectory>D:\A\B\Framework\EasemobSDK\1CheckOutProjectFiles\Easemob.Restfull4Net\NuGetRun</baseDirectory>
<buildArgs>all</buildArgs>
<buildTimeoutSeconds></buildTimeoutSeconds>
<successExitCodes></successExitCodes>
</exec>

原理为:先编译Debug版本并输出文件,再编译Release版本,最后运行RunNuGetPackage.bat的脚本进行包的打包和推送。

大致的原理可以这样描述:1、公共库的的代码提交到SVN之后。2、CCNET自动检测并编译。3、编译好之后用批处理进行包的自动提交。

这里有一点公共库开发时要注意的:1、规范。2、版本号。参考:http://www.cnblogs.com/EasonJim/p/5880233.html

关于符号服务器源码调试的方法:http://www.cnblogs.com/EasonJim/p/5891742.html;如果想要使用这个,那么上面项目编译时的路径就不应该包含中文。

SVN+CCNET+ProGet服务器拓扑图和流程图

CCNET+ProGet+Windows Batch搭建全自动的内部包打包和推送及管理平台的更多相关文章

  1. Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台

    这一篇文章是继http://www.cnblogs.com/EasonJim/p/5954155.html的升级版,由于CCNET已经过时,所以我把打包过程的CCNET工具换成Jenkins去实现,批 ...

  2. springboot搭建一个简单的websocket的实时推送应用

    说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ...

  3. 利用windows服务+timer或者windows任务计划程序+控制台进行进行每日邮件推送

    1.邮件发送代码 using System.Text; using System.Net; using System.Net.Mail; using System.Reflection; using ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十九):推送avro格式数据到topic,并使用spark structured streaming接收topic解析avro数据

    推送avro格式数据到topic 源代码:https://github.com/Neuw84/structured-streaming-avro-demo/blob/master/src/main/j ...

  5. Android、iOS和Windows Phone中的推送技术

    推送并不是什么新技术,这种技术在互联网时代就已经很流行了.只是随着进入移动互联网时代,推送技术显得更加重要.因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示 ...

  6. RedMine项目管理系统邮件推送设置(Windows环境)

    RedMine项目管理系统有邮箱推送功能,当Bug,安全漏洞等内容被修改.解决.评论的时候,系统会通过邮件 及时的通知你的团队和客户.邮件通知的环节.形式.时间.接受人均可定制,功能十分实用. 下面是 ...

  7. 一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式

    前言 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念 ...

  8. windows batch语法

    windows BATCH基本知识扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件. ==== 注 =============================== ...

  9. windows 2003 搭建一个vpn

    最近从Photonvps.com 租了一台windows主机用来测试网站,512MB的内存,35GB的硬盘空间,每个月500GB的流量和2个独立IP地址.我感觉价格偏贵,不过售后服务还是蛮不错的,每次 ...

随机推荐

  1. IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表

    浏览器兼容问题一直是前段开发工程师比较头痛的问题,熟悉了里面的规则也就变得简单了,这里有一份资料可以分享给大家,大家平时开发过程中遵循这个规律的话,会变得轻松多了: 各浏览器CSS hack兼容表: ...

  2. Linux shell特性

    一:别名 .alias 查看本用户下的alias配置 --自定义别名:alias 别名='shell命令' (注意是单引号) --cat $HOME/.bashrc 在这个用户下配置着alias名的配 ...

  3. 学习C++.Primer.Plus 7 函数

    C++的返回值类型不能是数组 函数原型中的变量名相当于点位符,因此不要求提供变量名. void cheers(int); C++中不指定参数列表时就使用活力号: void saybye(...); 通 ...

  4. jboss eap 6.3 集群(cluster)配置

    接上一篇继续,Domain模式解决了统一管理多台jboss的问题,今天我们来学习如何利用mod_cluster来实现负载均衡.容错. mod_cluster是jboss的一个开源集群模块(基于apac ...

  5. java:使用匿名类直接new接口

    java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口 ...

  6. web 前端常用组件【05】ZTree

    web 项目或多或少都会有涉及到什么人员职称树,菜单树,组织机构树等. 历手三四个项目有大有小,采用的树前端都是 Ztree. 有些优秀的J2EE 框架将这些常用的组件都封装起来,作为模块化的组件提供 ...

  7. opencv8-GPU之相似性计算

    Opencv支持GPU计算,并且包含成一个gpu类用来方便调用,所以不需要去加上什么__global__什么的很方便,不过同时这个类还是有不足的,待opencv小组的更新和完善. 这里先介绍在之前的& ...

  8. BASH 命令以及使用方法小结

    最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...

  9. 深入理解 cocos2d-x 坐标系

    首先对于初学的,带大家认识 cocos2d-x 中坐标系的几个概念,参考 http://blog.csdn.net/tskyfree/article/details/8292544.其他的往下看. 弄 ...

  10. [CF #236 (Div. 2) E] Strictly Positive Matrix(强联通分量)

    题目:http://codeforces.com/contest/402/problem/E 题意:给你一个矩阵a,判断是否存在k,使得a^k这个矩阵全部元素都大于0 分析:把矩阵当作01矩阵,超过1 ...