VERBOSE=${VERBOSE:-}
lastCleverActivity=""
+timeout=2300 # 100 seconds less than the Ansible tasks' timeout
+startTime=$(date +%s)
function cleverActivity {
lastCleverActivity=$(clever activity)
}
function ensure {
- if [ "$?" == "1" ]
- then
- echo "✗ Deployment failed!"
- fi
+ local lastReturnCode="$?"
+
VERBOSE=true
verbose
+
+ if isNotTimeout
+ then
+ if [ "$lastReturnCode" == "0" ]
+ then
+ echo "✓ Deployment done."
+ else
+ echo "✗ Deployment failed!"
+ fi
+ else
+ echo "⁈ Deployment timeout... Please check clever logs"
+ exit 1
+ fi
+}
+
+function isNotTimeout {
+ [ $(($(date +%s) - startTime)) -lt $timeout ]
}
trap ensure EXIT ERR
local samplingTime=5
echo "️▫ Waiting for deployment to start..."
- while inactive "$commit"
+ while inactive "$commit" && isNotTimeout
do
verbose
sleep $samplingTime
# Wait for completion
echo "▪ Deployment in progress..."
- while deploying "$commit"
+ while deploying "$commit" && isNotTimeout
do
verbose
sleep $samplingTime
done
deployed "$commit"
- echo "✓ Deployment done."
}
function getHeadRev {
jid: "{{ long_command.ansible_job_id }}"
register: job_result
until: job_result.finished
+ ignore_errors: true
delay: 30
retries: 80 # 40 minutes (80 * 30 secs delay)
-# Output of waiting script stdout
-- name: Output waiting script logs
+- name: Waiting script logs (stdout)
debug:
var: job_result.stdout_lines
+ when: job_result.stdout_lines is defined
+
+- name: Waiting script logs (stderr)
+ debug:
+ var: job_result.stderr_lines
+ when: job_result.stderr_lines is defined
+
+- name: Fail in case of timeout or failure
+ fail:
+ msg: "Deployment failed. Please check logs above."
+ when: not job_result.finished or not job_result.rc == 0