zoukankan      html  css  js  c++  java
  • CCNET+ProGet+Windows Batch搭建全自动的内部包打包和推送及管理平台

    所要用的工具:

    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:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe</executable>
            <buildArgs>
            /p:OutputPath=D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4NetinDebug;Platform="Any CPU";Configuration=Debug;GenerateDocumentation=true;DocumentationFile=D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4NetinDebugEasemob.Restfull4Net.xml;DebugSymbols=true
            </buildArgs>
            <workingDirectory>D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4Net</workingDirectory>
            <projectFile>Easemob.Restfull4Net.csproj</projectFile>
            <targets>Build</targets>
            <timeout>900000</timeout>
          </msbuild>      
          <msbuild>
            <executable>C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe</executable>
            <buildArgs>
        /p:OutputPath=D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4NetinRelease;Platform="Any CPU";Configuration=Release;GenerateDocumentation=true;DocumentationFile=D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4NetinReleaseEasemob.Restfull4Net.xml;DebugSymbols=true
            </buildArgs>
            <workingDirectory>D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4Net</workingDirectory>
            <projectFile>Easemob.Restfull4Net.csproj</projectFile>
            <targets>Build</targets>
            <timeout>900000</timeout>
          </msbuild>
          <exec>
            <executable>RunNuGetPackage.bat</executable>
            <baseDirectory>D:ABFrameworkEasemobSDK1CheckOutProjectFilesEasemob.Restfull4NetNuGetRun</baseDirectory>
            <buildArgs>all</buildArgs>
            <buildTimeoutSeconds>180</buildTimeoutSeconds>
            <successExitCodes>0</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服务器拓扑图和流程图

  • 相关阅读:
    Markdown自动生成目录
    defer使用小结
    RESTful API设计的点
    总结下数据库的命名规范
    go module学习笔记
    golang环境安装和配置
    jenkins环境搭建&配置(二)
    mac环境搭建selenium
    sed命令
    测试工作遇到的自动补0
  • 原文地址:https://www.cnblogs.com/EasonJim/p/5954155.html
Copyright © 2011-2022 走看看