summaryrefslogtreecommitdiff
path: root/contrib/cirrus/ooe.sh
diff options
context:
space:
mode:
authorChris Evich <cevich@redhat.com>2018-07-09 12:30:20 -0400
committerChris Evich <cevich@redhat.com>2018-10-04 16:30:48 -0400
commitc53163b75a698af3d3bd5305efb2610f4bb7880b (patch)
treed870d7352ebcc82e953e96514a7c19448cf65f10 /contrib/cirrus/ooe.sh
parent094b8b73505cb084d632ebb08e2a014e68f5e1b1 (diff)
downloadpodman-c53163b75a698af3d3bd5305efb2610f4bb7880b.tar.gz
podman-c53163b75a698af3d3bd5305efb2610f4bb7880b.tar.bz2
podman-c53163b75a698af3d3bd5305efb2610f4bb7880b.zip
Add configuration for Cirrus-CI
Testing podman requires exercising on a full-blown VM. The current containerized-approach is complicated, and mostly a band-aid over shortcomings in the other CI systems. Namely, we want: * To pre-build environments with dependencies to reduce the setup time needed for testing. * The ability to verify the pre-built environments are working before utilizing them for further testing. * A simple, single set of flexible automation instructions to reduce maintenance burden. * Ease of environment reproduction across clouds or locally, for debugging failures. This change leverages Cirrus-CI + Packer + collection of shell scripts to realize all of the above. Signed-off-by: Chris Evich <cevich@redhat.com>
Diffstat (limited to 'contrib/cirrus/ooe.sh')
-rwxr-xr-xcontrib/cirrus/ooe.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/cirrus/ooe.sh b/contrib/cirrus/ooe.sh
new file mode 100755
index 000000000..d79e574b2
--- /dev/null
+++ b/contrib/cirrus/ooe.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# This script executes a command while logging all output to a temporary
+# file. If the command exits non-zero, then all output is sent to the console,
+# before returning the exit code. If the script itself fails, the exit code 121
+# is returned.
+
+set -eo pipefail
+
+SCRIPT_PATH="$0"
+
+badusage() {
+ echo "Incorrect usage: $(basename $SCRIPT_PATH) <command> [options]" > /dev/stderr
+ echo "ERROR: $1"
+ exit 121
+}
+
+COMMAND="$@"
+[[ -n "$COMMAND" ]] || badusage "No command specified"
+
+OUTPUT_TMPFILE="$(mktemp -p '' $(basename $0)_output_XXXX)"
+output_on_error() {
+ RET=$?
+ set +e
+ if [[ "$RET" -ne "0" ]]
+ then
+ echo "---------------------------"
+ cat "$OUTPUT_TMPFILE"
+ echo "[$(date --iso-8601=second)] <exit $RET> $COMMAND"
+ fi
+ rm -f "$OUTPUT_TMPFILE"
+}
+trap "output_on_error" EXIT
+
+"$@" 2>&1 | while IFS='' read LINE # Preserve leading/trailing whitespace
+do
+ # Every stdout and (copied) stderr line
+ echo "[$(date --iso-8601=second)] $LINE"
+done >> "$OUTPUT_TMPFILE"