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