X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Ftox-run.sh;h=3bf1576000b80127d324ea0984ce01511d4d4ddd;hb=410c98d801fccf6fb097603dc39b31f47165660c;hp=6560094ce4a208e24b5499ce550b8582cee16065;hpb=52980f24cf898a614c39d3a3c6674ccd4622aee0;p=releng%2Fglobal-jjb.git diff --git a/shell/tox-run.sh b/shell/tox-run.sh index 6560094c..3bf15760 100644 --- a/shell/tox-run.sh +++ b/shell/tox-run.sh @@ -1,15 +1,56 @@ #!/bin/bash -echo "---> tox-install.sh" +# SPDX-License-Identifier: EPL-1.0 +############################################################################## +# Copyright (c) 2017 The Linux Foundation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################## +echo "---> tox-run.sh" # Ensure we fail the job if any steps fail. # DO NOT set -u as virtualenv's activate script has unbound variables set -e -o pipefail +ARCHIVE_TOX_DIR="$WORKSPACE/archives/tox" +mkdir -p "$ARCHIVE_TOX_DIR" + cd "$WORKSPACE/$TOX_DIR" -if [ -n "$TOX_ENVS" ]; -then - tox -e "$TOX_ENVS" +if [ -z "$TOX_ENVS" ]; then + TOX_ENVS=$(crudini --get tox.ini tox envlist) +fi + +run_tox() { + local log_dir="$1" + local env="$2" + + # Sleep a random 10 second interval to workaround tox sdist + # conflicts due to building in the same dist directory. + sleep $[ ( $RANDOM % 10 ) + 1 ]s + + echo "-----> Running tox $env" + if ! tox -e $env > "$log_dir/tox-$env.log"; then + echo "$env" >> "$log_dir/failed-envs.log" + fi +} + +TOX_ENVS=(${TOX_ENVS//,/ }) +if hash parallel 2>/dev/null; then + export -f run_tox + parallel --jobs 200% "run_tox $ARCHIVE_TOX_DIR {}" ::: ${TOX_ENVS[*]} else - tox + for env in "${TOX_ENVS[@]}"; do + run_tox "$ARCHIVE_TOX_DIR" "$env" + done +fi + +if [ -f "$ARCHIVE_TOX_DIR/failed-envs.log" ]; then + failed_envs=($(cat "$ARCHIVE_TOX_DIR/failed-envs.log")) + echo "ERROR: Failed the following builds: ${failed_envs[*]}" + exit 1 fi + +echo "Completed tox runs."