Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 23 additions & 20 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
# >> Configure MINIO NATIVES SNAPSHOT
# OBJECTS_KEY=XXXXXX
# >> Configure SONATYPE RELEASE
# OSSRH_PASSWORD=XXXXXX
# OSSRH_USERNAME=XXXXXX
# CENTRAL_PASSWORD=XXXXXX
# CENTRAL_USERNAME=XXXXXX
# >> Configure SIGNING
# SIGNING_KEY=XXXXXX
# SIGNING_PASSWORD=XXXXXX
Expand Down Expand Up @@ -359,16 +359,16 @@ jobs:
name: android-natives
path: build/native

- name: Rebuild the maven artifacts and deploy them to the Sonatype repository
- name: Rebuild the maven artifacts and upload them to Sonatype's maven-snapshots repo
run: |
if [ "${{ secrets.OSSRH_PASSWORD }}" = "" ];
if [ "${{ secrets.CENTRAL_PASSWORD }}" = "" ];
then
echo "Configure the following secrets to enable deployment to Sonatype:"
echo "OSSRH_PASSWORD, OSSRH_USERNAME, SIGNING_KEY, SIGNING_PASSWORD"
echo "Configure the following secrets to enable uploading to Sonatype:"
echo "CENTRAL_PASSWORD, CENTRAL_USERNAME, SIGNING_KEY, SIGNING_PASSWORD"
else
./gradlew publishMavenPublicationToSNAPSHOTRepository \
-PossrhPassword=${{ secrets.OSSRH_PASSWORD }} \
-PossrhUsername=${{ secrets.OSSRH_USERNAME }} \
-PcentralPassword=${{ secrets.CENTRAL_PASSWORD }} \
-PcentralUsername=${{ secrets.CENTRAL_USERNAME }} \
-PsigningKey='${{ secrets.SIGNING_KEY }}' \
-PsigningPassword='${{ secrets.SIGNING_PASSWORD }}' \
-PuseCommitHashAsVersionName=true \
Expand All @@ -390,7 +390,7 @@ jobs:
with:
fetch-depth: 1

# Setup jdk 21 used for building Sonatype OSSRH artifacts
# Setup jdk 21 used for building Sonatype artifacts
- name: Setup the java environment
uses: actions/setup-java@v4
with:
Expand All @@ -416,20 +416,23 @@ jobs:
name: android-natives
path: build/native

- name: Rebuild the maven artifacts and deploy them to Sonatype OSSRH
- name: Rebuild the maven artifacts and upload them to Sonatype's Central Publisher Portal
run: |
if [ "${{ secrets.OSSRH_PASSWORD }}" = "" ];
if [ "${{ secrets.CENTRAL_PASSWORD }}" = "" ];
then
echo "Configure the following secrets to enable deployment to Sonatype:"
echo "OSSRH_PASSWORD, OSSRH_USERNAME, SIGNING_KEY, SIGNING_PASSWORD"
echo "Configure the following secrets to enable uploading to Sonatype:"
echo "CENTRAL_PASSWORD, CENTRAL_USERNAME, SIGNING_KEY, SIGNING_PASSWORD"
else
./gradlew publishMavenPublicationToOSSRHRepository \
-PossrhPassword=${{ secrets.OSSRH_PASSWORD }} \
-PossrhUsername=${{ secrets.OSSRH_USERNAME }} \
-PsigningKey='${{ secrets.SIGNING_KEY }}' \
-PsigningPassword='${{ secrets.SIGNING_PASSWORD }}' \
-PuseCommitHashAsVersionName=true \
--console=plain --stacktrace
./gradlew publishMavenPublicationToCentralRepository \
-PcentralPassword=${{ secrets.CENTRAL_PASSWORD }} \
-PcentralUsername=${{ secrets.CENTRAL_USERNAME }} \
-PsigningKey='${{ secrets.SIGNING_KEY }}' \
-PsigningPassword='${{ secrets.SIGNING_PASSWORD }}' \
-PuseCommitHashAsVersionName=true \
--console=plain --stacktrace
./uploadToCentral.sh \
-p '${{ secrets.CENTRAL_PASSWORD }}' \
-u '${{ secrets.CENTRAL_USERNAME }}'
fi

- name: Deploy to GitHub Releases
Expand Down
32 changes: 20 additions & 12 deletions common.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -157,27 +157,35 @@ publishing {
version project.version
}
}

repositories {
maven {
name = 'Dist'
url = gradle.rootProject.projectDir.absolutePath + '/dist/maven'
}

// Uploading to Sonatype relies on the existence of 2 properties
// (centralUsername and centralPassword)
// which should be set using -P options on the command line.

maven {
// for uploading release builds to the default repo in Sonatype's OSSRH staging area
credentials {
username = gradle.rootProject.hasProperty('centralUsername') ? centralUsername : 'Unknown user'
password = gradle.rootProject.hasProperty('centralPassword') ? centralPassword : 'Unknown password'
}
name = 'Central'
url = 'https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/'
}
maven {
// for uploading snapshot builds to Sonatype's maven-snapshots repo
credentials {
username = gradle.rootProject.hasProperty('ossrhUsername') ? ossrhUsername : 'Unknown user'
password = gradle.rootProject.hasProperty('ossrhPassword') ? ossrhPassword : 'Unknown password'
username = gradle.rootProject.hasProperty('centralUsername') ? centralUsername : 'Unknown user'
password = gradle.rootProject.hasProperty('centralPassword') ? centralPassword : 'Unknown password'
}
name = 'OSSRH'
url = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2'
name = 'SNAPSHOT'
url = 'https://central.sonatype.com/repository/maven-snapshots/'
}
maven {
credentials {
username = gradle.rootProject.hasProperty('ossrhUsername') ? ossrhUsername : 'Unknown user'
password = gradle.rootProject.hasProperty('ossrhPassword') ? ossrhPassword : 'Unknown password'
}
name = 'SNAPSHOT'
url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
}
}
}

Expand Down
68 changes: 68 additions & 0 deletions uploadToCentral.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#! /bin/bash
set -euo pipefail

## Upload a deployment
## from the "org.jmonkeyengine" namespace in Sonatype's OSSRH staging area
## to Sonatype's Central Publisher Portal
## so the deployment can be tested and then published or dropped.

## IMPORTANT: The upload request must originate
## from the IP address used to stage the deployment to the staging area!

# The required -p and -u flags on the command line
# specify the password and username components of a "user token"
# generated using the web interface at https://central.sonatype.com/account

while getopts p:u: flag
do
case "${flag}" in
p) centralPassword=${OPTARG};;
u) centralUsername=${OPTARG};;
esac
done

# Combine both components into a base64 "user token"
# suitable for the Authorization header of a POST request:

token=$(printf %s:%s "${centralUsername}" "${centralPassword}" | base64)

# Send a POST request to upload the deployment:

server='ossrh-staging-api.central.sonatype.com'
endpoint='/manual/upload/defaultRepository/org.jmonkeyengine'
url="https://${server}${endpoint}"

statusCode=$(curl "${url}" \
--no-progress-meter \
--output postData1.txt \
--write-out '%{response_code}' \
--request POST \
--header 'accept: */*' \
--header "Authorization: Bearer ${token}" \
--data '')

echo "Status code = ${statusCode}"
echo 'Received data:'
cat postData1.txt
echo '[EOF]'

# Retry if the default repo isn't found (status=400).

if [ "${statusCode}" == "400" ]; then
echo "Will retry after 30 seconds."
sleep 30

statusCode2=$(curl "${url}" \
--no-progress-meter \
--output postData2.txt \
--write-out '%{response_code}' \
--request POST \
--header 'accept: */*' \
--header "Authorization: Bearer ${token}" \
--data '')

echo "Status code = ${statusCode2}"
echo 'Received data:'
cat postData2.txt
echo '[EOF]'
fi