blob: 85b4467a523ac55f45832aeb76d5d8f535fbcf8a [file] [log] [blame]
#!/bin/bash
# -----------------------------------------------------------------------------
# Tool to perform a cell-based remote bazel build using a borrowed test cell.
# -----------------------------------------------------------------------------
# Check environment
[ -z "$OCN" ] && echo "Cell environment not established" && exit 1
runTests=""
while getopts b:t?h o; do
case "$o" in
b) branch=$OPTARG;;
t) runTests=true;;
*) echo "usage: cell-build [-b branch] [-t] [commitHash]" >&2; exit 1;;
esac
done
let OPC=$OPTIND-1
shift $OPC
# Check arguments and environment
branch=${branch:-origin/master}
baseCommit=${1:-$(git log | grep $branch | head -n1 | cut -d\ -f2)}
# Create a patch file
git diff $baseCommit > /tmp/$baseCommit.patch
# Copy patch file to the remote build machine
scp /tmp/$baseCommit.patch $ONOS_USER@$OCN:/tmp
ssh -t -t $ONOS_USER@$OCN "
source ~/.bash_aliases
cd \$ONOS_ROOT
# Clean-up the workspace and stash away any changes.
git clean -f
git stash
# Make sure the remote build machine is on the same commit hash as the local one
remoteCommit=\$(git log -n 1 | head -n1 | cut -d\ -f2)
if [ "\$remoteCommit" != "$baseCommit" ]; then
git checkout master
git pull
git checkout $baseCommit
fi
# Apply the patch if necessary
[ -s /tmp/$baseCommit.patch ] && git apply /tmp/$baseCommit.patch
# Run the build (neutralizing known environment mutations in SSH sessions)
set -e
SHLVL=1 SSH_CLIENT=0 SSH_CONNECTION=0 bazel build onos
if [ $runTests = true ]; then
bazel query 'tests(//...)' | SHLVL=1 SSH_CLIENT=0 SSH_CONNECTION=0 xargs bazel test
fi
"