自动发布web应用程序或者网站

转载 2013年12月02日 13:25:39

由于需要自动化构建集成测试,所以需要一整套环境。

  关键 1根据源代码的改动自动下载代码,2编译3发布网站

   1第一步只需要通过CruiseControl.NET就可以做到

    2编译其实就是在ccnet.config中添加一个任务,关键代码  

  

[html] view plaincopy
  1. <tasks>  
  2.             <msbuild>  
  3.                 <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Msbuild.exe</executable>  
  4.                 <workingDirectory>$(baseDirectory)$(workingDirectory)$(projectName)\src\PollutantMonitorPlatform\PollutantMonitor</workingDirectory>   
  5.                 <projectFile>$(baseDirectory)$(workingDirectory)$(projectName)\src\PollutantMonitorPlatform\PollutantMonitor\PollutantMonitor\PollutantMonitor.csproj</projectFile>  
  6.                 <buildArgs>/noconsolelogger /p:OutDir=C:\SourceControl\publish\PollutantMonitor\ /v:n</buildArgs>  
  7.                 <targets>Clean;Build;_CopyWebApplication</targets>  
  8.                  <timeout>900</timeout>  
  9.                  <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>  
  10.              </msbuild>   
  11.              <exec>  
  12.                 <executable>AddApp.bat</executable>  
  13.                 <baseDirectory>C:\Program Files\CruiseControl.NET\server</baseDirectory>  
  14.                 <buildArgs>PollutantMonitor 82 $(baseDirectory)TestWeb\PollutantMonitor "ASP.NET v4.0"</buildArgs>  
  15.                 <buildTimeoutSeconds>10</buildTimeoutSeconds>  
  16.            </exec>               
  17.         </tasks>  
  18.        <publishers>  
  19.            <xmllogger/>  
  20.              <buildpublisher>  
  21.             <sourceDir>$(baseDirectory)$(publishDirectory)PollutantMonitor\_PublishedWebsites</sourceDir>  
  22.             <publishDir>C:\SourceControl\Test\</publishDir>  
  23.             <useLabelSubDirectory>false</useLabelSubDirectory>  
  24.             <alwaysPublish>false</alwaysPublish>  
  25.          </buildpublisher>  
  26.       </publishers>  


通过应用msbuild.exe命令行就可以编译,不需要vs的开发环境。

  网站项目的命令行如下:

[html] view plaincopy
  1. C:\Windows\Microsoft.NET\Framework\v3.5\Msbuild.exe F:\download\MSBuildDemo1\MSBuildDemo.sln 
  2. /t:Clean;Build /p:OutDir=H:\testweb\  

   含义就是通过3.5版的Msbuild.exe编译路径F:\download\MSBuildDemo1下的solution文件MSBuildDemo.sln,首先清理,再生成,最后把生成的所有文件复制到目录下H:\testweb\

web应用程序项目的命令行如下:

[html] view plaincopy
  1. C:\Windows\Microsoft.NET\Framework\v3.5\Msbuild.exe 
  2. F:\download\MSBuildDemo\BFL.MSBuildDemo.WebApp\BFL.MSBuildDemo.WebApp.csproj
  3.  /t:Clean;Build;_CopyWebApplication /p:OutDir=H:\testweb\  

   含义就是通过3.5版的Msbuild.exe编译路径F:\download\MSBuildDemo\BFL.MSBuildDemo.WebApp\下的项目文件BFL.MSBuildDemo.WebApp.csproj ,首先清理,再生成,最后把生成的所有文件复制到目录下H:\testweb\

两种方式都在OutDir下生成了目录_PublishedWebsites,和通过vs右键发布生成的一样。

如何出现如下错误,需要修改csproj项目文件中的如下一行,需要改变版本,例如把v10.0改为v8.0或者v9.0 

[html] view plaincopy
  1. <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />  

[html] view plaincopy
  1.     C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(133,11): error MSB4064: The "Retries" parameter is not supported by the "Copy" task. Verify the parameter exists on the task, and it is a settable public instance property.  
  2.   
  3. C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(131,5): error MSB4063: The "Copy" task could not be initialized with its input parameters.   
  4. Done Building Project "F:\download\MSBuildDemo\BFL.MSBuildDemo.WebApp\BFL.MSBuildDemo.WebApp.csproj" (Clean;Build;_CopyWebApplication target(s)) -- FAILED.  
  5.   
  6. Build FAILED.  
  7.   
  8. "F:\download\MSBuildDemo\BFL.MSBuildDemo.WebApp\BFL.MSBuildDemo.WebApp.csproj" (Clean;Build;_CopyWebApplication target) (1) ->  
  9. (_CopyWebApplicationLegacy target) ->   
  10.   C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(133,11): error MSB4064: The "Retries" parameter is not supported by the "Copy" task. Verify the parameter exists on the task, and it is a settable public instance property.  
  11.   C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(131,5): error MSB4063: The "Copy" task could not be initialized with its input parameters.   
  12.   
  13.   
  14.     0 Warning(s)  
  15.     2 Error(s)  
  16.   
  17.   
  18. Time Elapsed 00:00:00.42  
  19.     
3发布网站到IIS下
  由于上一步已经生成了发布需要的所有文件,所以这一步就是拷贝文件,设定虚拟目录,就可以了。我使用的是II7,IIS7有一个工具appcmd可以简化发布。

[html] view plaincopy
  1. %windir%\system32\inetsrv\appcmd add app  /site.name:"Default Web Site" /path:/TestWeb
  2.  /physicalPath:C:\SourceControl\Test\TestWeb\PollutantMonitor   

  含义调用appcmd在Default Web Site下添加一个web应用程序,虚拟路径为TestWeb,物理路径为C:\SourceControl\Test\TestWeb\PollutantMonitor 

[html] view plaincopy
  1. %systemroot%\system32\inetsrv\APPCMD set app "Default Web Site/TestWeb" /applicationPool:"ASP.NET v4.0"  

 含义调用appcmd设置Default Web Site/TestWeb web应用程序的运行环境为ASP.NET v4.0

[html] view plaincopy
  1. %windir%\system32\inetsrv\appcmd delete app  "Default Web Site/TestWeb"   
 含义调用appcmd删除iis下的Default Web Site/TestWeb web应用程序

  通过一个bat文件自动添加应用程序和设置运行版本,文件内容如下:

  重复添加会有错误,目前就是忽略,还没有找到好的方法

  1.   if exist %windir%\system32\inetsrv\appcmd.exe (goto AddWeb)  else (goto NOappcmd)   
  2.    :AddWeb   
  3.  echo 添加网站  
  4.  %windir%\system32\inetsrv\appcmd add site  /name:%1 /bindings:http/*:%2: /physicalPath:%3  
  5.    if %errorlevel% equ  0 goto success    
  6.    if %errorlevel% gtr  0 goto failed    
  7.   
  8.    :failed  
  9.   echo 获得错误返回码为%errorlevel%  
  10.       echo 添加网站failed  
  11.   goto end      
  12. :success         
  13.   echo 添加网站successed  
  14.   echo 获得返回码为%errorlevel%  
  15.   echo 设置dotnet版本,启动网站  
  16.    %systemroot%\system32\inetsrv\APPCMD set app %1"/" /applicationPool:%4  
  17.    %systemroot%\system32\inetsrv\APPCMD start site %1  
  18.  goto end  
  19.  :NOappcmd  
  20. echo %windir%\system32\inetsrv\appcmd.exe is not exist    
  21.   
  22. :end  


 需要注意的是以上命令需要有管理员的权限,否则就会出错

参考文章

使用 MSBuild 以特定的 NET Framework 为目标

MSBuild Task Reference

使用MSBuild自动编译发布你的ASP.NET应用程序

重启IIS命令行iisreset

如何使用 Appcmd.exe 命令行工具启用和配置 Internet Information Services 7.0 中的 HTTP 日志记录和其他功能

IIS(IISReset.exe)命令行

Create a Web Site (IIS 7)

Configuring-IIS-7-command-line-Appcmdexe

Getting Started with AppCmd.exe

出自:http://blog.csdn.net/xuexiaodong009/article/details/7473681

相关文章推荐

msbuild构建web应用脚本

@echo off SET DestPath=D:\projectFolder SET SrcPath=D:\srcFolder SET ProjectName=ProjectName SET Con...

ccnet +msbuild +svn 每日构建(二 )编译完成后自动发布并部署文件

http://127.0.0.1/ccnet/ViewFarmReport.aspx     test4           https://luyifeng.corp.ganji.com:8...

自动发布web应用程序或者网站

由于需要自动化构建集成测试,所以需要一整套环境。   关键 1根据源代码的改动自动下载代码,2编译3发布网站    1第一步只需要通过CruiseControl.NET就可以做到     2编译其实就...

Jenkins搭建.NET自动编译测试与发布环境

操作系统Windows, http://jenkins-ci.org/下载Windows安装包。安装后,访问http://localhost:8080 . Jenkins => Manager Jen...

WEB项目(B/S系统)打包安装程序总结-部署安装

WEB项目(B/S系统)打包安装程序总结   使用VS 自带的打包工具,制作webform安装项目  开发环境:VS 2008 ,Ms sqlserver 2008(必须先安装),IIS(必须先安装)...

使用OFBIZ的理由和不使用OFBIZ的理由

1 使用OFBIZ的理由 1.1 什么是OFBIZ OFBIZ是由Sourceforge维护的一个最著名的开源项目之一,提供创建基于最新J2EE/XML规范和技术标准,构建大型企业级、跨平台、跨数...

自构建工具TeamCity的安装及使用

自构建工具TeamCity的安装及使用 第2章 安装步骤 2.2 软件安装 2.2.1 安装包位置 \\192.168.0.5\persons\下载软件\TeamCity-8.1.5.exe  附属...

新闻发布系统——web应用程序与网站的区别

web应用程序与网站的区别

ASP.NET Web应用程序和ASP.NET网站的区别

 WebApplication编程模型的优点:●网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去。●生成的程序集        WebSite:生成随机的程序集名,需...

新建网站与新建Asp.Net Web应用程序的区别

【转自】http://hi.baidu.com/roleya/blog/item/2981b4cc1a1d721b00e92848.html 新建网站与新建Asp.Net Web 应用程序的区别...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自动发布web应用程序或者网站
举报原因:
原因补充:

(最多只允许输入30个字)