script to deploy to maven central
This commit is contained in:
74
scripts/maven-central-deploy.sh
Executable file
74
scripts/maven-central-deploy.sh
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user