When the server returns an error, the curl command does not fail - probably because the server sends a wrong http status code:
curl \ --form token="$token" \ --form email=holger@freyther.de --form file=@Osmocom.tgz \ --form version=Version --form description=AutoUpload \ https://scan.coverity.com/builds?project=Osmocom + set +x % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed … <html> <head><title>413 Request Entity Too Large</title></head> <body> <center><h1>413 Request Entity Too Large</h1></center> <hr><center>nginx/1.19.10</center> </body> </html> Finished: SUCCESS
Fail if the output doesn't contain the "Build successfully submitted" string, so the job fails if there was an error.
(The request entity too large error is probably an error on their end, scan.coverity.com still says they are performing upgrades on their servers.)
Run the start-hook.sh / stop-hook.sh scripts that store pcscd logs and a usbmon capture. The jenkins node is configured to allow running these two scripts with sudo as jenkins user. Store the resulting files as artifacts.