112 lines
4.3 KiB
Bash
112 lines
4.3 KiB
Bash
#!/bin/bash
|
|
|
|
#
|
|
# /* ******************************************************************************
|
|
# *
|
|
# *
|
|
# * This program and the accompanying materials are made available under the
|
|
# * terms of the Apache License, Version 2.0 which is available at
|
|
# * https://www.apache.org/licenses/LICENSE-2.0.
|
|
# *
|
|
# * See the NOTICE file distributed with this work for additional
|
|
# * information regarding copyright ownership.
|
|
# * Unless required by applicable law or agreed to in writing, software
|
|
# * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# * License for the specific language governing permissions and limitations
|
|
# * under the License.
|
|
# *
|
|
# * SPDX-License-Identifier: Apache-2.0
|
|
# ******************************************************************************/
|
|
#
|
|
|
|
|
|
if [[ $# < 2 ]]; then
|
|
echo "Usage: bash release-specified-component.sh release_version snapshot_version [staging_repository]"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
RELEASE_VERSION=$1
|
|
SNAPSHOT_VERSION=$2
|
|
#STAGING_REPOSITORY=
|
|
STAGING_REPOSITORY=$3
|
|
|
|
if [ -z "$COMMAND" ]; then
|
|
if [ -z "$4" ]; then
|
|
echo "Please specify a command environment variable or a 4th parameter specifying the maven command."
|
|
exit 1
|
|
else
|
|
COMMAND="$4"
|
|
fi
|
|
|
|
fi
|
|
|
|
DEPLOY_COMMAND="$COMMAND"
|
|
STAGING_REPO_FLAG=
|
|
RELEASE_PROFILE=${RELEASE_PROFILE:-sonatype}
|
|
if [[ "$2" != *-SNAPSHOT ]]
|
|
then
|
|
echo "Error: Version $SNAPSHOT_VERSION should finish with -SNAPSHOT"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Releasing version $RELEASE_VERSION ($SNAPSHOT_VERSION) to repository $RELEASE_PROFILE $STAGING_REPOSITORY"
|
|
echo "========================================================================================================="
|
|
|
|
#if [[ ! -z $(git tag -l "deeplearning4j-$RELEASE_VERSION") ]]; then
|
|
# echo "Error: Version $RELEASE_VERSION has already been released!"
|
|
# exit 1
|
|
#fi
|
|
|
|
bash ./update-versions.sh "$SNAPSHOT_VERSION" "$RELEASE_VERSION"
|
|
|
|
# mvn clean deploy -Dgpg.executable=gpg2 -Prelease -Dlocal.software.repository=$RELEASE_PROFILE -Dmaven.test.skip -Dlibnd4j.cuda=8.0 -Denforcer.skip -DstagingRepositoryId=$STAGING_REPOSITORY
|
|
# add flags specific to release, assumes an mvn deploy command is given
|
|
# Note: we add javadoc fail on error here to avoid javadoc errors blocking a release
|
|
unameOut="$(uname -s)"
|
|
case "${unameOut}" in
|
|
Linux*) machine=Linux;;
|
|
Darwin*) machine=Mac;;
|
|
CYGWIN*) machine=Cygwin;;
|
|
MINGW*) machine=MinGw;;
|
|
*) machine="UNKNOWN:${unameOut}"
|
|
esac
|
|
echo ${machine}
|
|
|
|
if [[ "${machine}" == "Mac" ]]; then
|
|
echo "Adding osx specific parameters for gpg signing"
|
|
#DEPLOY_COMMAND="${DEPLOY_COMMAND} -X "
|
|
fi
|
|
|
|
if [ -z "${MODULES}" ]; then export MODULES= ; fi
|
|
|
|
|
|
DEPLOY_COMMAND="${DEPLOY_COMMAND} ${MODULES} -Prelease -Dlocal.software.repository=$RELEASE_PROFILE -Denforcer.skip -Dmaven.javadoc.failOnError=false"
|
|
|
|
#-DstagingRepositoryId=$STAGING_REPOSITORY
|
|
if [[ -z ${STAGING_REPOSITORY:-} ]]; then
|
|
# create new staging repository with everything in it
|
|
if [[ ! $(grep stagingRepository.id target/nexus-staging/staging/*.properties) =~ ^stagingRepository.id=(.*) ]]; then
|
|
echo "Setting empty staging repository"
|
|
STAGING_REPOSITORY=
|
|
# note: the reason we set this is to ensure when bootstrapping a build we're not trying to download from a repo that doesn't exist
|
|
# this --also-make flag handles any transitive dependencies and uploads those. The reason this is important is if a build tries to upload
|
|
# an already existing dependency, sonatype nexus returns a 400 bad request. So we need deps that haven't already been uploaded.
|
|
# this is because repos are immutable by default, no overrides are allowed whereas for snapshots this is not the case.
|
|
STAGING_REPO_FLAG=""
|
|
else
|
|
echo "Using staging repository ${STAGING_REPOSITORY}"
|
|
#STAGING_REPOSITORY="${BASH_REMATCH[1]}"
|
|
#only specify a staging repo if it's not empty
|
|
STAGING_REPO_FLAG="-DstagingRepositoryId=${STAGING_REPOSITORY}"
|
|
fi
|
|
else
|
|
STAGING_REPO_FLAG="-DstagingRepositoryId=${STAGING_REPOSITORY}"
|
|
echo "USING STAGING_REPOSITORY ${STAGING_REPOSITORY}, setting flag to ${STAGING_REPO_FLAG}"
|
|
fi
|
|
|
|
DEPLOY_COMMAND="${DEPLOY_COMMAND} ${STAGING_REPO_FLAG}"
|
|
echo "RUNNING maven command ${DEPLOY_COMMAND}"
|
|
eval "$DEPLOY_COMMAND"
|