We are using a CURL script in bamboo to call and external API.If the API comes back with, say, a HTTP 400 (Bad Request) status message, how can Bamboo interpret that as a failure? Currently, the plan passes because bamboo was able to run the script. We also added the "-v" option to enable verbose messaging. The response also contains the word "error"
A Bamboo build will fail when the last exit code of your script ends with a value greater than 0.
By default a curl command will end with 0, even when you get an HTTP repsonse code other than 200.
The easiest solution is to use the --fail flag in your curl command. It will exit with error code 22.
Check the curl manual for more info.
curl --fail https://community.atlassian.com/thisdoesnotexist
echo $? #this outputs the exit code of the previous command. 22 in this case
note: do not include that echo command in your script as it's own exit code will be 0.
An alterative is to extract the http response code from your curl response and check whether it's 200 or something else but that requires some extra Linux commands.
In case your curl command is not the last one in your script task you should either save the exit code in a variable and or use set -e at the top of your script.