osmo-gsm-tester/sysmocom/ttcn3/jenkins-run.sh

61 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
set -e -x
base="$PWD"
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P) # this file's directory
OSMO_GSM_TESTER_CONF=${OSMO_GSM_TESTER_CONF:-${SCRIPT_DIR}/main.conf}
time_start="$(date '+%F %T')"
prepare_docker() {
OLDPWD=$PWD
# update docker-playground and update the BSC and bsc-test containers (if needed)
DIR=~/jenkins/docker-playground
if [ ! -d "$DIR" ]; then
mkdir -p ~/jenkins/ && cd ~/jenkins
git clone git://git.osmocom.org/docker-playground
fi
cd $DIR
git remote prune origin; git fetch; git checkout -f -B master origin/master
cd $DIR/debian-stretch-titan && make
docker pull laforge/debian-stretch-titan:latest # HACK
cd $DIR/ttcn3-bts-test && make
# execute the script to start containers, read results, ...
#cd $DIR/ttcn3-bts-test && sh -x ./jenkins.sh
PWD=$OLDPWD
}
docker pull registry.osmocom.org/ttcn3-bts-test
# remove older trial dirs and *-run.tgz, if any
trial_dir_prefix="trial-"
rm -rf "$trial_dir_prefix"* || true
# Expecting *.tgz artifacts to be copied to this workspace from the various
# jenkins-*.sh runs, via jenkins job configuration. Compose a trial dir:
trial_dir="${trial_dir_prefix}$BUILD_NUMBER"
mkdir -p "$trial_dir"
mv *.tgz "$trial_dir"
cat *.md5 >> "$trial_dir/checksums.md5"
rm *.md5
# OSMO_GSM_TESTER_OPTS is a way to pass in e.g. logging preferences from the
# jenkins build job.
# On failure, first clean up below and then return the exit code.
exit_code="1"
if python3 -u "$(which osmo-gsm-tester.py)" -c "$OSMO_GSM_TESTER_CONF" "$trial_dir" $OSMO_GSM_TESTER_OPTS ; then
exit_code="0"
fi
# no need to keep extracted binaries
rm -rf "$trial_dir/inst" || true
# tar up all results for archiving (optional)
cd "$trial_dir"
journalctl -u ofono -o short-precise --since "${time_start}" > "$(readlink last_run)/ofono.log"
tar czf "$base/${trial_dir}-run.tgz" "$(readlink last_run)"
tar czf "$base/${trial_dir}-bin.tgz" *.md5 *.tgz
exit $exit_code