| #!/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 |
| |
| # Check arguments and environment |
| baseCommit=${1:-$(git log | grep origin/master | 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) |
| SHLVL=1 SSH_CLIENT=0 SSH_CONNECTION=0 bazel build onos |
| " |