jenkinsci / jenkinsci/durable-task-plugin
[JENKINS-54036] Write-Error in powershell step behaves confusingly
- Dominant language
- Java
- Stars
- 30
- Forks
- 101
- PR merge metrics
- No merged PRs in 30d
Description
In the Release Notes for Powershell support, it is stated clearly, with an example, that writing to the error stream in powershell will fail that stage:
Your powershell step may produce a failing exit status in the following instances:
- Something in your PowerShell script has thrown an exception
- Your PowerShell script explicitly calls exit with a non-zero exit code
- Your PowerShell script calls a native application that produces a non-zero $LastExitCode
- Your PowerShell script results in a non-empty error stream (with or without throwing an exception)
However, if I try that myself, the stage succeeds (though error output is still written to the console):
```
pipeline {
agent { label 'windows' }
options {
skipDefaultCheckout()
durabilityHint('PERFORMANCE_OPTIMIZED')
}
stages {
stage('write-error') {
steps {
powershell 'write-error "bang"'
}
}
}
}
```
```
[write-error] powershell.exe : C:\Jenkins\workspace\owpos\pos\frp\00-build@tmp\durable-2fc4febd\powershellScript.ps1 : bang
[write-error] At C:\Jenkins\workspace\owpos\pos\frp\00-build@tmp\durable-2fc4febd\powershellWrapper.ps1:3 char:1
[write-error] + & powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Comm ...
[write-error] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[write-error] + CategoryInfo : NotSpecified: (C:\Jenkins\work...ript.ps1 : bang:String) [], RemoteException
[write-error] + FullyQualifiedErrorId : NativeCommandError
[write-error]
[write-error] At line:1 char:1
[write-error]
[write-error] + & 'C:\Jenkins\workspace\owpos\pos\frp\00-build@tmp\durable-2fc4febd\p ...
[write-error]
[write-error] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[write-error]
[write-error] + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
[write-error]
[write-error] + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,powershellScript.ps1
[write-error]
[write-error]
[write-error]
```
The plugin should behave like the documentation.
---
Originally reported by akdor1154, imported from: Write-Error in powershell step behaves confusingly
Raw content of original issue
In the Release Notes for Powershell support, it is stated clearly, with an example, that writing to the error stream in powershell will fail that stage:
Your powershell step may produce a failing exit status in the following instances:
- Something in your PowerShell script has thrown an exception
- Your PowerShell script explicitly calls exit with a non-zero exit code
- Your PowerShell script calls a native application that produces a non-zero $LastExitCode
- Your PowerShell script results in a non-empty error stream (with or without throwing an exception)
However, if I try that myself, the stage succeeds (though error output is still written to the console):
pipeline {
agent { label 'windows' }
options {
skipDefaultCheckout()
durabilityHint('PERFORMANCE_OPTIMIZED')
}
stages {
stage('write-error') {
steps {
powershell 'write-error "bang"'
}
}
}
}[write-error] powershell.exe : C:\Jenkins\workspace\owpos\pos\frp\00-build@tmp\durable-2fc4febd\powershellScript.ps1 : bang
[write-error] At C:\Jenkins\workspace\owpos\pos\frp\00-build@tmp\durable-2fc4febd\powershellWrapper.ps1:3 char:1
[write-error] + & powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Comm ...
[write-error] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[write-error] + CategoryInfo : NotSpecified: (C:\Jenkins\work...ript.ps1 : bang:String) [], RemoteException
[write-error] + FullyQualifiedErrorId : NativeCommandError
[write-error]
[write-error] At line:1 char:1
[write-error]
[write-error] + & 'C:\Jenkins\workspace\owpos\pos\frp\00-build@tmp\durable-2fc4febd\p ...
[write-error]
[write-error] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[write-error]
[write-error] + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
[write-error]
[write-error] + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,powershellScript.ps1
[write-error]
[write-error]
[write-error]The plugin should behave like the documentation.
Contributor guide
Assessment
This issue has not been assessed yet.