#!/bin/bash -e

# exit on errors
set -eu -o pipefail

# set up ONOS build environment
ONOS_ROOT=`pwd`
. tools/build/envDefaults

PATH=$PATH:/home/jenkins/bin

# set up JDK 11 if needed
if [ ${GERRIT_BRANCH} == "master" -o ${GERRIT_BRANCH} == "onos-2.2" ]
then
    echo Installing OPEN JDK 11
    sudo update-java-alternatives -s java-11-amazon-corretto
    java -version
else
    echo Using default JDK
fi

# 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}
