Resolution
You can use a try
catch
block to achieve this.
The following asks for input. An if statement checking the input result (userInput) is used to determine what to do next:
def userInput try { userInput = input( id: 'Proceed1', message: 'Was this successful?', parameters: [ [$class: 'BooleanParameterDefinition', defaultValue: true, description: '', name: 'Please confirm you agree with this'] ]) } catch(err) { // input false def user = err.getCauses()[0].getUser() userInput = false echo "Aborted by: [${user}]" } node { if (userInput == true) { // do something echo "this was successful" } else { // do something else echo "this was not successful" currentBuild.result = 'FAILURE' } }
Note: This code will require you to approve the getCauses()
method inside of script security under Manage Jenkins> In-process Script Approval
:
catch(err) { // input false def user = err.getCauses()[0].getUser() userInput = false echo "Aborted by: [${user}]" }
If you do not want to approve that method(or dont have admin permissions) then use this instead:
catch(err) { // input false echo "This Job has been Aborted" }
This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.