Skip to content

Add Sonatype credentials verification step #11

Add Sonatype credentials verification step

Add Sonatype credentials verification step #11

Workflow file for this run

name: Publish to Maven Central
on:
push:
tags:
- 'v*'
branches:
- 'feature/release-1'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
cache: 'maven'
- name: Setup GPG
run: |
echo "Setting up GPG..."
mkdir -p ~/.gnupg
chmod 700 ~/.gnupg
# Import private key
echo "${{ secrets.GPG_PRIVATE_KEY }}" > private.key
echo "Importing GPG key..."
gpg --batch --import private.key
rm private.key
# Configure GPG
echo "Configuring GPG..."
cat > ~/.gnupg/gpg.conf << EOF
default-key ${{ secrets.GPG_KEYNAME }}
use-agent
pinentry-mode loopback
EOF
# Debug information
echo "=== GPG Keys ==="
gpg --list-secret-keys --keyid-format LONG
gpg --list-keys --keyid-format LONG
- name: Configure Maven
run: |
mkdir -p ~/.m2
cat > ~/.m2/settings.xml << EOF
<settings>
<servers>
<server>
<id>ossrh</id>
<username>${{ secrets.OSSRH_USERNAME_TOKEN }}</username>
<password>${{ secrets.OSSRH_PASSWORD_TOKEN }}</password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.passphrase>${{ secrets.GPG_PASSPHRASE }}</gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>
EOF
- name: Verify Sonatype Credentials
run: |
echo "Verifying Sonatype credentials..."
echo "Username: ${{ secrets.OSSRH_USERNAME_TOKEN }}"
echo "Password length: ${#OSSRH_PASSWORD_TOKEN}"
# Test connection to Sonatype
curl -v -u "${{ secrets.OSSRH_USERNAME_TOKEN }}:${{ secrets.OSSRH_PASSWORD_TOKEN }}" \
https://s01.oss.sonatype.org/service/local/user/profile
# Test Maven connection
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
mvn help:evaluate -Dexpression=settings.servers -q -DforceStdout
- name: Build and Publish
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME_TOKEN }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: |
echo "Starting Maven build and deploy..."
mvn clean deploy -P release \
-Dmaven.javadoc.skip=false \
-Dmaven.deploy.skip=false \
-Dgpg.keyname=${{ secrets.GPG_KEYNAME }} \
-Dgpg.useagent=true \
-Dmaven.test.failure.ignore=false \
-DnexusUrl=https://s01.oss.sonatype.org/ \
-DserverId=ossrh \
-DaltDeploymentRepository=ossrh::default::https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ \
-DrepositoryId=ossrh \
-Dusername=${{ secrets.OSSRH_USERNAME_TOKEN }} \
-Dpassword=${{ secrets.OSSRH_PASSWORD_TOKEN }} \
-X \
-e \
--debug \
-Dgpg.verbose=true \
-Dgpg.debug=true
echo "Checking deployment status..."
mvn nexus-staging:rc-list \
-DserverId=ossrh \
-Dusername=${{ secrets.OSSRH_USERNAME_TOKEN }} \
-Dpassword=${{ secrets.OSSRH_PASSWORD_TOKEN }}
echo "Closing staging repository..."
mvn nexus-staging:rc-close \
-DserverId=ossrh \
-Dusername=${{ secrets.OSSRH_USERNAME_TOKEN }} \
-Dpassword=${{ secrets.OSSRH_PASSWORD_TOKEN }}
echo "Releasing to Maven Central..."
mvn nexus-staging:rc-release \
-DserverId=ossrh \
-Dusername=${{ secrets.OSSRH_USERNAME_TOKEN }} \
-Dpassword=${{ secrets.OSSRH_PASSWORD_TOKEN }}