blob: ac6e510c39ff0fb84fc4a71cda7dfe2ae4f82cad [file] [log] [blame]
Thomas Vachuska21112ad2018-08-06 14:28:10 -07001#!/bin/bash
2# -----------------------------------------------------------------------------
3# Tool to perform a cell-based remote bazel build using a borrowed test cell.
4# -----------------------------------------------------------------------------
5
6# Check environment
7[ -z "$OCN" ] && echo "Cell environment not established" && exit 1
8
9# Check arguments and environment
10baseCommit=${1:-$(git log | grep origin/master | head -n1 | cut -d\ -f2)}
11
12# Create a patch file
Thomas Vachuska19bd0c32018-08-06 15:13:12 -070013git diff $baseCommit > /tmp/$baseCommit.patch
Thomas Vachuska21112ad2018-08-06 14:28:10 -070014
15# Copy patch file to the remote build machine
16scp /tmp/$baseCommit.patch $ONOS_USER@$OCN:/tmp
17
18ssh -t -t $ONOS_USER@$OCN "
19 source ~/.bash_aliases
20 cd \$ONOS_ROOT
21
Thomas Vachuska6be30682018-08-06 14:37:43 -070022 # Clean-up the workspace and stash away any changes.
23 git clean -f
24 git stash
25
Thomas Vachuskabf6739d2018-08-06 20:09:53 -070026 # Make sure the remote build machine is on the same commit hash as the local one
27 remoteCommit=\$(git log -n 1 | head -n1 | cut -d\ -f2)
Thomas Vachuska21112ad2018-08-06 14:28:10 -070028 if [ "\$remoteCommit" != "$baseCommit" ]; then
29 git checkout master
30 git pull
31 git checkout $baseCommit
32 fi
33
Thomas Vachuskabf6739d2018-08-06 20:09:53 -070034 # Apply the patch if necessary
35 [ -s /tmp/$baseCommit.patch ] && git apply /tmp/$baseCommit.patch
Thomas Vachuska21112ad2018-08-06 14:28:10 -070036
Thomas Vachuska19bd0c32018-08-06 15:13:12 -070037 # Run the build (neutralizing known environment mutations in SSH sessions)
Thomas Vachuska6be30682018-08-06 14:37:43 -070038 SHLVL=1 SSH_CLIENT=0 SSH_CONNECTION=0 bazel build onos
Thomas Vachuska21112ad2018-08-06 14:28:10 -070039"