How do I get errors to propagate in the TeamCity PowerShell runner

Viewed 18417

I have a TeamCity 7 Build Configuration which is pretty much only an invocation of a .ps1 script using various TeamCity Parameters.

I was hoping that might be a simple matter of setting:

  • Script

    File

  • Script File

    %system.teamcity.build.workingDir%/Script.ps1

  • Script execution mode

    Execute .ps1 script with "-File" argument

  • Script arguments

    %system.teamcity.build.workingDir% -OptionB %BuildConfigArgument% %BuildConfigArg2%

And then I would expect:

  • if I mess up my arguments and the script won't start, the Build fails
  • if my Script.ps1 script throws, the Build fails
  • If the script exits with a non-0 Error Level I want the Build to Fail (maybe this is not idiomatic PS error management - should a .ps1 only report success by the absence of exceptions?)

The question: It just doesn't work. How is it supposed to work? Is there something I'm doing drastically wrong that I can fix by choosing different options?

10 Answers

This checks the last error code and exits if is not 0.

    If ($LASTEXITCODE -ne 0) {
        Write-Host "The result was of the previous script was " $LASTEXITCODE
        Exit $LASTEXITCODE
    }
Related