Files
spring-boot/ci/scripts/promote.sh
T
Madhura Bhave a938c372ea Switch to async promotion
Due to timeouts while distributing release artifacts,
this commit uses the async mode for distribution.

Before syncing to maven central, we need to check if all the artifacts
have been published to Bintray. This is done by hitting the Bintray API
till we get the version or until a timeout is reached.

Closes gh-12292
2018-03-29 16:03:24 -07:00

70 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -e
source $(dirname $0)/common.sh
buildName=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.name' )
buildNumber=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.number' )
groupId=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/\(.*\):.*:.*/\1/' )
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
if [[ $RELEASE_TYPE = "M" ]]; then
targetRepo="libs-milestone-local"
elif [[ $RELEASE_TYPE = "RC" ]]; then
targetRepo="libs-milestone-local"
elif [[ $RELEASE_TYPE = "RELEASE" ]]; then
targetRepo="libs-release-local"
else
echo "Unknown release type $RELEASE_TYPE" >&2; exit 1;
fi
echo "Promoting ${buildName}/${buildNumber} to ${targetRepo}"
curl \
-s \
--connect-timeout 240 \
--max-time 900 \
-u ${ARTIFACTORY_USERNAME}:${ARTIFACTORY_PASSWORD} \
-H "Content-type:application/json" \
-d "{\"status\": \"staged\", \"sourceRepo\": \"libs-staging-local\", \"targetRepo\": \"${targetRepo}\"}" \
-f \
-X \
POST "${ARTIFACTORY_SERVER}/api/build/promote/${buildName}/${buildNumber}" > /dev/null || { echo "Failed to promote" >&2; exit 1; }
if [[ $RELEASE_TYPE = "RELEASE" ]]; then
curl \
-s \
--connect-timeout 240 \
--max-time 2700 \
-u ${ARTIFACTORY_USERNAME}:${ARTIFACTORY_PASSWORD} \
-H "Content-type:application/json" \
-d "{\"sourceRepos\": [\"libs-release-local\"], \"targetRepo\" : \"spring-distributions\", \"async\":\"true\"}" \
-f \
-X \
POST "${ARTIFACTORY_SERVER}/api/build/distribute/${buildName}/${buildNumber}" > /dev/null || { echo "Failed to distribute" >&2; exit 1; }
echo "Waiting for artifacts to be published"
ARTIFACTS_PUBLISHED=false
WAIT_TIME=5
COUNTER=0
while [ $ARTIFACTS_PUBLISHED == "false" ] && [ $COUNTER -lt 24 ]; do
result=$(curl https://api.bintray.com/packages/${BINTRAY_SUBJECT}/${BINTRAY_REPO}/$groupId )
versions=$( echo $result | jq -r '.versions' )
exists=$(echo $versions | grep $version)
if [ $? -eq 0 ]; then
ARTIFACTS_PUBLISHED=true
fi
COUNTER=$(( $COUNTER + 1))
echo $COUNTER
sleep WAIT_TIME
done
if [ $ARTIFACTS_PUBLISHED == "false" ]; then
echo "Failed to publish"
exit 1
fi
fi
echo "Promotion complete"