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

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

# upload API docs
BUILD_OUTPUT_PATH=${ONOS_ROOT}/bazel-bin/docs/tmp

SYNC_TARGET_SERVER=static.opennetworking.org
SYNC_TARGET_PATH=/srv/sites/api.onosproject.org/${ONOS_VERSION}

rsync -rvzh --delete-after --exclude=.git "$BUILD_OUTPUT_PATH" "$SYNC_TARGET_SERVER:$SYNC_TARGET_PATH"
