blob: 14c05cd33ad87daf94d8b63cab5deb4d03b5005b [file] [log] [blame]
#!/bin/bash -ex
#
# Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Distribution License v. 1.0, which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# Arguments:
# $1 - API_VERSION
# $2 - NEXT_API_VERSION
# $3 - DRY_RUN
# $4 - OVERWRITE
API_VERSION="${1}"
NEXT_API_VERSION="${2}"
DRY_RUN="${3}"
OVERWRITE="${4}"
. etc/scripts/maven.incl.sh
. etc/scripts/nexus.incl.sh
read_version 'API' "${API_DIR}"
if [ -z "${API_RELEASE_VERSION}" ]; then
echo '-[ Missing required API release version number! ]-------------------------------'
exit 1
fi
RELEASE_TAG="${API_RELEASE_VERSION}"
RELEASE_BRANCH="${API_RELEASE_VERSION}-RELEASE"
if [ ${DRY_RUN} = 'true' ]; then
echo '-[ Dry run turned on ]----------------------------------------------------------'
MVN_DEPLOY_ARGS='install'
echo '-[ Skipping GitHub branch and tag checks ]--------------------------------------'
else
MVN_DEPLOY_ARGS='deploy'
GIT_ORIGIN=`git remote`
echo '-[ Prepare branch ]-------------------------------------------------------------'
if [[ -n `git branch -r | grep "${GIT_ORIGIN}/${RELEASE_BRANCH}"` ]]; then
if [ "${OVERWRITE}" = 'true' ]; then
echo "${GIT_ORIGIN}/${RELEASE_BRANCH} branch already exists, deleting"
git push --delete origin "${RELEASE_BRANCH}" && true
else
echo "Error: ${GIT_ORIGIN}/${RELEASE_BRANCH} branch already exists"
exit 1
fi
fi
echo '-[ Release tag cleanup ]--------------------------------------------------------'
if [[ -n `git ls-remote --tags ${GIT_ORIGIN} | grep "${RELEASE_TAG}"` ]]; then
if [ "${OVERWRITE}" = 'true' ]; then
echo "${RELEASE_TAG} tag already exists, deleting"
git push --delete origin "${RELEASE_TAG}" && true
else
echo "Error: ${RELEASE_TAG} tag already exists"
exit 1
fi
fi
fi
# Always delete local branch if exists
git branch --delete "${RELEASE_BRANCH}" && true
git checkout -b ${RELEASE_BRANCH}
# Always delete local tag if exists
git tag --delete "${RELEASE_TAG}" && true
# Read Maven identifiers
read_mvn_id 'API' "${API_DIR}/jaxb-api"
# Set Nexus identifiers
API_STAGING_DESC="${API_GROUP_ID}:${API_ARTIFACT_ID}:${API_RELEASE_VERSION}"
API_STAGING_KEY=$(echo ${API_STAGING_DESC} | sed -e 's/\./\\\./g')
# Set release versions
echo '-[ API release version ]--------------------------------------------------------'
set_version 'API' "${API_DIR}" "${API_RELEASE_VERSION}" "${API_GROUP_ID}" "${API_ARTIFACT_ID}" ''
drop_artifacts "${API_STAGING_KEY}" "${API_DIR}"
echo '-[ Deploy artifacts to staging repository ]-----------------------------'
# Verify, sign and deploy release
(cd ${API_DIR} && \
mvn -U -C -B -V \
-Poss-release,staging -DskipTests \
-DstagingDescription="${API_STAGING_DESC}" \
clean ${MVN_DEPLOY_ARGS})
echo '-[ Tag release ]----------------------------------------------------------------'
git tag "${RELEASE_TAG}" -m "JSON-B API ${API_RELEASE_VERSION} release"
# Set next release cycle snapshot version
echo '-[ API next snapshot version ]--------------------------------------------------'
set_version 'API' "${API_DIR}" "${API_NEXT_SNAPSHOT}" "${API_GROUP_ID}" "${API_ARTIFACT_ID}" ''
if [ ${DRY_RUN} = 'true' ]; then
echo '-[ Skipping GitHub update ]-----------------------------------------------------'
else
echo '-[ Push branch and tag to GitHub ]----------------------------------------------'
git push origin "${RELEASE_BRANCH}"
git push origin "${RELEASE_TAG}"
fi