我花了大约三天的时间来设置TeamCity来构建和发布asp.net-5项目。最后,我通过使用dnu publish
命令来发布站点来做到这一点。我正在使用批处理文件通过以下命令进行操作
// stops the apppool for 'samplesite' overvise it returns exception
// The process cannot access the file '...' because it is being used by another process
call "%windir%\system32\inetsrv\appcmd" stop apppool "samplesite"
// publish the site to the --out dir
call "C:\Users\Administrator\.dnx\runtimes\dnx-coreclr-win-x86.1.0.0-beta6\bin\dnu" publish --out "F:\Sites\samplesite" --runtime dnx-clr-win-x86.1.0.0-beta6
// copies the 'prod' config.json
copy "..\..\build\configuration\samplesite\config.json" "F:\Sites\samplesite\approot\src\samplesite\config.json" /Y
// copies the 'prod' web.config
copy "..\..\build\configuration\samplesite\web.config" "F:\Sites\samplesite\wwwroot\web.config" /Y
// starts the apppool for 'samplesite'
call "%windir%\system32\inetsrv\appcmd" start apppool "samplesite"
问题是
是否可以从
dnu publish
命令返回错误/异常以显示发布失败?例如,发布时我可能会遇到异常
该进程无法访问文件.....或
路径长度不能超过260个字符...
但是TeamCity的构建结果将显示为
Success
,因此我始终需要检查它是否真的完成了,没有任何异常。有没有更好的方法/脚本来发布asp.net-5网站?也许我只是做错了什么。
最佳答案
这有点晚了,但是我正在为我们工作。我一直在使用Powershell脚本来包装命令行调用。因为是PS,所以您可以尝试/捕获,然后在捕获中使用## teamcity属性来标记对团队城市的失败。还要确保退出时使用的状态码不是0。请注意,我强制使用状态码1退出以指示失败。最后,确保PS脚本中的所有命令行调用都以“&”开头。
因此,例如调用DNU publish(我使用我在team city中设置的环境变量来指示dnx版本)。
try
{
& dnvm use $env:dnxversion -arch x64
& dnu publish --no-source --configuration Release --runtime dnx-clr-win-x64.$env:dnxversion
}
catch
{
Write-Error $_
##teamcity[buildStatus status='FAILURE']
[System.Environment]::Exit(1)
}
关于c# - 在TeamCity构建结果中显示`dnu publish`异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32338218/