74 lines
2.2 KiB
Bash
Executable File
74 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This script deploys the built library to Maven Central.
|
|
# $GPG_KEY_ID must be set to a key ID
|
|
# $TOKEN_USERNAME and $TOKEN_PASSWORD must be set to your Maven Central token credentials
|
|
|
|
if [ -z $GPG_KEY_ID ]; then
|
|
echo "\$GPG_KEY_ID not set" >&2
|
|
exit 1
|
|
fi
|
|
if [ -z $TOKEN_USERNAME ]; then
|
|
echo "\$TOKEN_USERNAME not set" >&2
|
|
exit 1
|
|
fi
|
|
if [ -z $TOKEN_PASSWORD ]; then
|
|
echo "\$TOKEN_PASSWORD not set" >&2
|
|
exit 1
|
|
fi
|
|
|
|
POM=build/publications/maven/pom-default.xml
|
|
|
|
set -e
|
|
|
|
if [ ! -e "${POM}" ]; then
|
|
echo "No file: '${POM}'." >&2
|
|
echo "Maybe run 'gradle -Pversion=0.0.1 build generatePomFileForMavenPublication'?" >&2
|
|
exit 1
|
|
fi
|
|
|
|
GROUP_ID=$(xmlstarlet sel -t -m '//_:project' -v '_:groupId' build/publications/maven/pom-default.xml)
|
|
ARTIFACT_ID=$(xmlstarlet sel -t -m '//_:project' -v '_:artifactId' build/publications/maven/pom-default.xml)
|
|
VERSION=$(xmlstarlet sel -t -m '//_:project' -v '_:version' build/publications/maven/pom-default.xml)
|
|
|
|
NAME="${GROUP_ID}:${ARTIFACT_ID}:${VERSION}"
|
|
|
|
echo "Deploy ${NAME}..."
|
|
|
|
# build the zip directory
|
|
ZIP_DIR="build/publications/maven/central-bundle"
|
|
rm -rf "${ZIP_DIR}"
|
|
SUB_DIR="${GROUP_ID//./\/}/${ARTIFACT_ID//.\//}/${VERSION}"
|
|
TARGET_DIR="${ZIP_DIR}/${SUB_DIR}"
|
|
mkdir -p "${TARGET_DIR}"
|
|
|
|
cp $POM "${TARGET_DIR}/${ARTIFACT_ID}-${VERSION}.pom"
|
|
cp "build/libs/${ARTIFACT_ID}-${VERSION}.jar" "${TARGET_DIR}"
|
|
cp "build/libs/${ARTIFACT_ID}-${VERSION}-javadoc.jar" "${TARGET_DIR}"
|
|
cp "build/libs/${ARTIFACT_ID}-${VERSION}-sources.jar" "${TARGET_DIR}"
|
|
|
|
# sign and digest
|
|
pushd $TARGET_DIR
|
|
for file in *.jar *.pom; do
|
|
gpg --default-key $GPG_KEY_ID --armor --detach-sign "${file}"
|
|
sha1sum "${file}" |awk '{print $1}' > "${file}.sha1"
|
|
md5sum "${file}" |awk '{print $1}' > "${file}.md5"
|
|
done
|
|
popd
|
|
|
|
# build the zip file
|
|
ZIP="build/publications/maven/central-bundle.zip"
|
|
rm -f "${ZIP}"
|
|
pushd $ZIP_DIR
|
|
zip -r ../$(basename ${ZIP}) .
|
|
popd
|
|
|
|
# deploy
|
|
AUTH_HEADER="Authorization: Bearer $(echo "${TOKEN_USERNAME}:${TOKEN_PASSWORD}"|base64)"
|
|
DEPLOYMENT_ID=$(curl --request POST \
|
|
--verbose \
|
|
--header "${AUTH_HEADER}" \
|
|
--form bundle=@${ZIP} \
|
|
"https://central.sonatype.com/api/v1/publisher/upload?publishingType=AUTOMATIC&name=${NAME}")
|
|
|
|
echo "Deployment ID: ${DEPLOYMENT_ID}" |