#!/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

# FIXME: re-enable locking when projectlock will be added to new ONOS gerrit
#  or change the release process to tag a specific commit instead of the whole branch
# 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}
