Fix detox logs not being archived 79/8379/6
authorThanh Ha <thanh.ha@linuxfoundation.org>
Fri, 12 Jan 2018 02:23:45 +0000 (21:23 -0500)
committerThanh Ha <thanh.ha@linuxfoundation.org>
Fri, 12 Jan 2018 04:01:31 +0000 (23:01 -0500)
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 <thanh.ha@linuxfoundation.org>
.jjb-test/expected-xml/gerrit-python-tox-verify-master
.jjb-test/expected-xml/github-python-tox-verify-master
shell/tox-run.sh

index 30f2729..18976d1 100644 (file)
@@ -337,19 +337,26 @@ if [ -d &quot;/opt/pyenv&quot; ]; then
     export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;
 fi
 
+set +e  # Allow detox to fail so that we can collect the logs in the next step
 if [ ! -z &quot;$TOX_ENVS&quot; ]; then
     detox -e &quot;$TOX_ENVS&quot;  | tee -a &quot;$ARCHIVE_TOX_DIR/detox.log&quot;
+    detox_status=&quot;${PIPESTATUS[0]}&quot;
 else
     detox | tee -a &quot;$ARCHIVE_TOX_DIR/detox.log&quot;
+    detox_status=&quot;${PIPESTATUS[0]}&quot;
 fi
 
 # Disable SC2116 as we want to echo a space separated list of TOX_ENVS
 # shellcheck disable=SC2116
-for i in $(echo &quot;${TOX_ENVS//,/ }&quot;); do
-    cp -r &quot;.tox/$i/log&quot; &quot;$ARCHIVE_TOX_DIR/$i&quot;
+for i in .tox/*/log; do
+    tox_env=$(echo $i | awk -F'/' '{print $2}')
+    cp -r &quot;$i&quot; &quot;$ARCHIVE_TOX_DIR/$tox_env&quot;
 done
+set -e  # Logs collected so re-enable
 
 echo &quot;Completed tox runs.&quot;
+
+test &quot;$detox_status&quot; -eq 0 || exit &quot;$detox_status&quot;
 </command>
     </hudson.tasks.Shell>
   </builders>
index 38ac0dd..d499bbd 100644 (file)
@@ -299,19 +299,26 @@ if [ -d &quot;/opt/pyenv&quot; ]; then
     export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;
 fi
 
+set +e  # Allow detox to fail so that we can collect the logs in the next step
 if [ ! -z &quot;$TOX_ENVS&quot; ]; then
     detox -e &quot;$TOX_ENVS&quot;  | tee -a &quot;$ARCHIVE_TOX_DIR/detox.log&quot;
+    detox_status=&quot;${PIPESTATUS[0]}&quot;
 else
     detox | tee -a &quot;$ARCHIVE_TOX_DIR/detox.log&quot;
+    detox_status=&quot;${PIPESTATUS[0]}&quot;
 fi
 
 # Disable SC2116 as we want to echo a space separated list of TOX_ENVS
 # shellcheck disable=SC2116
-for i in $(echo &quot;${TOX_ENVS//,/ }&quot;); do
-    cp -r &quot;.tox/$i/log&quot; &quot;$ARCHIVE_TOX_DIR/$i&quot;
+for i in .tox/*/log; do
+    tox_env=$(echo $i | awk -F'/' '{print $2}')
+    cp -r &quot;$i&quot; &quot;$ARCHIVE_TOX_DIR/$tox_env&quot;
 done
+set -e  # Logs collected so re-enable
 
 echo &quot;Completed tox runs.&quot;
+
+test &quot;$detox_status&quot; -eq 0 || exit &quot;$detox_status&quot;
 </command>
     </hudson.tasks.Shell>
   </builders>
index dd67699..7abdeea 100644 (file)
@@ -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"