#!/bin/bash -ex

# exit on errors
set -eu -o pipefail

ONOS_ROOT=`pwd`
. tools/build/envDefaults

PATH=$PATH:/home/jenkins/bin

# import GPG key
gpg --import jenkins.key

# set up release build credentials
. onos-build-credentials

# configure git settings
git config user.email "jenkins@onlab.us"
git config user.name "ONOS Jenkins User"

# install boto
pip install -U boto

# stage the maven settings
mkdir -p ~/.m2
mv settings.xml ~/.m2/settings.xml

# stage and add the build SSH key
chmod 600 id_rsa.pub
ssh-add id_rsa.pub

# Add the javadoc server to the list of known hosts
ssh-keyscan -H -t rsa api.onosproject.org >>~/.ssh/known_hosts

# set user to use for uploading javadocs
WIKI_USER="jenkins"
export WIKI_USER

# lock gerrit to prevent checkins
ssh -p 29418 gerrit.onosproject.org projectlock lock onos ${GERRIT_BRANCH}

# unlock on exit
trap "ssh -p 29418 gerrit.onosproject.org projectlock unlock onos ${GERRIT_BRANCH}" EXIT

# get the sources
git checkout $GERRIT_BRANCH

# run the build
onos-build-and-upload ${ONOS_VERSION} ${ONOS_NEXT_VERSION} ${GERRIT_BRANCH}
