使用 CruiseControl.NET 和 MSBuild 发布网站
Posted
技术标签:
【中文标题】使用 CruiseControl.NET 和 MSBuild 发布网站【英文标题】:Using CruiseControl.NET and MSBuild to publish a website 【发布时间】:2013-03-19 22:14:16 【问题描述】:我正在尝试设置 CruiseControl.NET 自动从 SVN (VisualSVN_Server) 下载新版本并将其发布到 beta 目录。
这是关于MSBuild的CruiseControl.NET配置文件:
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>C:\CI\WORKING</workingDirectory>
<projectFile>WashMyCarHomepage\WashMyCarHomepage.csproj</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag /p:WebProjectOutputDir=C:\inetpub\wwwroot.beta</buildArgs>
<targets>Build;Test</targets>
<timeout>900</timeout>
<logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
CruiseControl.NET 成功运行 MSBuild,但 MSBuild 失败:
standard-error stream closed -- null received in event
standard-output stream closed -- null received in event
process exited event received
我还尝试从控制台手动运行 MSBuild,以尝试它是否单独运行。但我无法获得正确的输出(可发布到网络)。我试过了:
C:\Windows\Microsoft.NET\Framework\v4.0.30319>MSBuild.exe C:\CI\WORKING\WashMyCarHomepage\WashMyCarHomepage.csproj /property:OutDir=C:/CI/TEST;Configuration=Release /t:Publish
但该项目被“跳过不可发布的项目”跳过。
我有以下解决方案的结构:
WashMyCarHomepage\WashMyCarHomepage.sln
WashMyCarHomepage\Repository\Repository.csproj
WashMyCarHomepage\WashMyCarHomepage\WashMyCarHomepage.csproj
我该如何解决这个问题?
【问题讨论】:
您在执行上述步骤之前是否下载了代码? 【参考方案1】:在与这个问题长期斗争之后,我确实找到了解决方案。 我正在提供整个 CruiseControl.NET 配置文件。
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<project name="Aucis">
<workingDirectory>C:\CI\WORKING</workingDirectory>
<artifactDirectory>C:\CI\BUILD</artifactDirectory>
<triggers>
<intervalTrigger name="CI Trigger" seconds="120" buildCondition="IfModificationExists"/>
</triggers>
<tasks Name="Clean">
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>C:\CI\WORKING</workingDirectory>
<projectFile>WashMyCarHomepage\WashMyCarHomepage.csproj</projectFile>
<buildArgs>/p:OutputPath=bin /P:Configuration=Deploy-Dev /P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=localhost /P:AllowUntrustedCertificate=True /P:MSDeployPublishMethod=WMSvc /P:CreatePackageOnPublish=True /P:UserName=WindowsUsername/P:Password=WindowsPassword</buildArgs>
<timeout>900</timeout>
<logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</tasks>
<sourcecontrol type="svn">
<executable>C:\Program Files (x86)\VisualSVN Server\bin\svn.exe</executable>
<trunkUrl>https://localhost:8443/svn/project/trunk</trunkUrl>
<username>svn_username</username>
<password>svn_password</password>
<autoGetSource>true</autoGetSource>
<cleanCopy>true</cleanCopy>
<revisionNumbers>true</revisionNumbers>
<tagBaseUrl>https://localhost:8443/svn/project/tags</tagBaseUrl>
</sourcecontrol>
</project>
</cruisecontrol>
请注意,“Deploy-Dev”是在 VisualStudio 中设置的配置。
【讨论】:
XML 元素也区分大小写。因此,如果您使用 CCValidator.exe 来检查您的配置,则可能是问题所在。以上是关于使用 CruiseControl.NET 和 MSBuild 发布网站的主要内容,如果未能解决你的问题,请参考以下文章
使用 CruiseControl.NET 和 MSBuild 发布网站
托管源代码控制托管和与 CVSDude 和 CruiseControl.net 的持续集成
FXcop 和 Msbuild 与 CruiseControl.NET
CruiseControl.NET(CCNET)“收到进程退出事件”但构建等待?