我该如何使用CruiseControl.NET和MSBuild部署/发布Web应用程序?我对CCNET还不熟悉,但我已经可以从SVN获取最新源代码并使用MSBuild 3.5进行构建。我该如何将网站发布到另一个(DEVELOPMENT)服务器?
感谢任何提示/示例。
祝好, ~ck
祝好, ~ck
对于在我的 CruiseControl.NET CI 服务器上构建完成后发布网站到开发服务器,我使用 Microsoft Web Deploy。它要求您在任何将被部署的服务器上安装部署服务。然后,您只需将执行步骤添加到生成过程中运行 msdeploy.exe 即可。以下是我在 NAnt 中使用的示例:
<exec program="C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe">
<arg value="-verb:sync"/>
<arg value="-source:dirPath="${tmpdir}""/>
<arg value="-dest:dirPath="${deploy.dir}",computerName=http://${servername}/msdeploymentservice/"/>
</exec>
通过使用Web Deploy,您可以轻松完成网站内容的完全同步,删除不应存在的内容。它还具有其他选项,例如忽略某些目录和发出重新启动应用程序池等命令。
我针对使用Web.config转换的CCNET提供了解决方案:
<tasks>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
<projectFile>GertakariakMSWeb2.vbproj</projectFile>
<targets>Build</targets>
<timeout>600</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
<buildArgs>
/noconsolelogger /p:Configuration=Release /v:diag
/p:DeployOnBuild=true
/p:AutoParameterizationWebConfigConnectionStrings=false
/p:DeployTarget=Package
/p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
</buildArgs>
</msbuild>
</tasks>
我发现这篇博客非常有用。基本上,你需要将ccnet.config文件指向你在项目目录中创建的MSBuild.xml文件。在MSBuild.xml文件中,你需要创建一个目标,使用_CopyWebApplication选项来构建和发布Web应用程序。
您也可以使用 Web Deployment Projects 来帮助处理这个问题。在 WDP 中,您可以使用 ExcludeFromBuild 项来排除那些文件。更多信息请参见 http://msdn.microsoft.com/en-us/library/aa479568.aspx。
这将处理网站的预编译,以便您可以将其发布到另一个开发服务器上,这取决于您现在如何部署。如果您将其复制到网络共享或 FTP,则也可以使用 MSBuild 进行操作。我不熟悉前面答案中提到的 Build Publisher。