8e979b2c95
When grabbing the console logs for jobs in order to upload these logs to swift we may run into Jenkins proxy errors which then end up in our console log file. Avoid this by using curl --fail which will not output any data and return 22 if the request fails. While editing this curl command document the odd choice of flags given as their necessity may not be very apparent. Change-Id: I7e53e11882046282b95addd635d804fa29b0eb44
39 lines
1.4 KiB
Bash
Executable File
39 lines
1.4 KiB
Bash
Executable File
#!/bin/bash -xe
|
|
|
|
RETRY_LIMIT=20
|
|
|
|
# Keep fetching until this uuid appears in the logs before uploading
|
|
END_UUID=$(cat /proc/sys/kernel/random/uuid)
|
|
|
|
echo "Grabbing consoleLog ($END_UUID)"
|
|
|
|
# Since we are appending to fetched logs, remove any possibly old runs
|
|
rm -f /tmp/console.html
|
|
|
|
# Grab the HTML version of the log (includes timestamps)
|
|
TRIES=0
|
|
console_log_path='logText/progressiveHtml'
|
|
while ! grep -q "$END_UUID" /tmp/console.html; do
|
|
TRIES=$((TRIES+1))
|
|
if [ $TRIES -gt $RETRY_LIMIT ]; then
|
|
break
|
|
fi
|
|
sleep 3
|
|
# -X POST because Jenkins doesn't do partial gets properly when
|
|
# job is running.
|
|
# --data start=X instructs Jenkins to mimic a partial get using
|
|
# POST. We determine how much data we need based on
|
|
# how much we already have.
|
|
# --fail will cause curl to not output data if the request
|
|
# fails. This allows us to retry when we have Jenkins proxy
|
|
# errors without polluting the output document.
|
|
# --insecure because our Jenkins masters use self signed SSL certs.
|
|
curl -X POST --data "start=$(stat -c %s /tmp/console.html || echo 0)" --fail --insecure $BUILD_URL$console_log_path >> /tmp/console.html
|
|
done
|
|
|
|
# We need to add <pre> tags around the output for log-osanalyze to not escape
|
|
# the content
|
|
|
|
sed -i '1s/^/<pre>\n/' /tmp/console.html
|
|
echo "</pre>" >> /tmp/console.html
|