From f6f5ec828da8600ea0602752c63058d0c50b235d Mon Sep 17 00:00:00 2001 From: Thanh Ha Date: Thu, 11 Jan 2018 21:23:45 -0500 Subject: [PATCH] Fix detox logs not being archived Since we immediately fail on any shell errors we miss log collection at the end of the build. Fix detox part of script to allow the log collection code to run. Change-Id: I50bcd337224adcecbf028f08b56cfebe2e10a3d4 Signed-off-by: Thanh Ha --- .jjb-test/expected-xml/gerrit-python-tox-verify-master | 11 +++++++++-- .jjb-test/expected-xml/github-python-tox-verify-master | 11 +++++++++-- shell/tox-run.sh | 11 +++++++++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.jjb-test/expected-xml/gerrit-python-tox-verify-master b/.jjb-test/expected-xml/gerrit-python-tox-verify-master index 30f27295..18976d10 100644 --- a/.jjb-test/expected-xml/gerrit-python-tox-verify-master +++ b/.jjb-test/expected-xml/gerrit-python-tox-verify-master @@ -337,19 +337,26 @@ if [ -d "/opt/pyenv" ]; then export PATH="$PYENV_ROOT/bin:$PATH" fi +set +e # Allow detox to fail so that we can collect the logs in the next step if [ ! -z "$TOX_ENVS" ]; then detox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/detox.log" + detox_status="${PIPESTATUS[0]}" else detox | tee -a "$ARCHIVE_TOX_DIR/detox.log" + detox_status="${PIPESTATUS[0]}" fi # Disable SC2116 as we want to echo a space separated list of TOX_ENVS # shellcheck disable=SC2116 -for i in $(echo "${TOX_ENVS//,/ }"); do - cp -r ".tox/$i/log" "$ARCHIVE_TOX_DIR/$i" +for i in .tox/*/log; do + tox_env=$(echo $i | awk -F'/' '{print $2}') + cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env" done +set -e # Logs collected so re-enable echo "Completed tox runs." + +test "$detox_status" -eq 0 || exit "$detox_status" diff --git a/.jjb-test/expected-xml/github-python-tox-verify-master b/.jjb-test/expected-xml/github-python-tox-verify-master index 38ac0dd2..d499bbd1 100644 --- a/.jjb-test/expected-xml/github-python-tox-verify-master +++ b/.jjb-test/expected-xml/github-python-tox-verify-master @@ -299,19 +299,26 @@ if [ -d "/opt/pyenv" ]; then export PATH="$PYENV_ROOT/bin:$PATH" fi +set +e # Allow detox to fail so that we can collect the logs in the next step if [ ! -z "$TOX_ENVS" ]; then detox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/detox.log" + detox_status="${PIPESTATUS[0]}" else detox | tee -a "$ARCHIVE_TOX_DIR/detox.log" + detox_status="${PIPESTATUS[0]}" fi # Disable SC2116 as we want to echo a space separated list of TOX_ENVS # shellcheck disable=SC2116 -for i in $(echo "${TOX_ENVS//,/ }"); do - cp -r ".tox/$i/log" "$ARCHIVE_TOX_DIR/$i" +for i in .tox/*/log; do + tox_env=$(echo $i | awk -F'/' '{print $2}') + cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env" done +set -e # Logs collected so re-enable echo "Completed tox runs." + +test "$detox_status" -eq 0 || exit "$detox_status" diff --git a/shell/tox-run.sh b/shell/tox-run.sh index dd676999..7abdeea6 100644 --- a/shell/tox-run.sh +++ b/shell/tox-run.sh @@ -27,16 +27,23 @@ if [ -d "/opt/pyenv" ]; then export PATH="$PYENV_ROOT/bin:$PATH" fi +set +e # Allow detox to fail so that we can collect the logs in the next step if [ ! -z "$TOX_ENVS" ]; then detox -e "$TOX_ENVS" | tee -a "$ARCHIVE_TOX_DIR/detox.log" + detox_status="${PIPESTATUS[0]}" else detox | tee -a "$ARCHIVE_TOX_DIR/detox.log" + detox_status="${PIPESTATUS[0]}" fi # Disable SC2116 as we want to echo a space separated list of TOX_ENVS # shellcheck disable=SC2116 -for i in $(echo "${TOX_ENVS//,/ }"); do - cp -r ".tox/$i/log" "$ARCHIVE_TOX_DIR/$i" +for i in .tox/*/log; do + tox_env=$(echo $i | awk -F'/' '{print $2}') + cp -r "$i" "$ARCHIVE_TOX_DIR/$tox_env" done +set -e # Logs collected so re-enable echo "Completed tox runs." + +test "$detox_status" -eq 0 || exit "$detox_status" -- 2.16.6