Skip to content

Release to Maven Central #43

Release to Maven Central

Release to Maven Central #43

Workflow file for this run

name: Release to Maven Central
on:
workflow_dispatch:
release:
types: [published]
permissions:
contents: read
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Java 11
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '11'
cache: maven
- name: Import GPG private key
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
run: |
echo "$GPG_PRIVATE_KEY" | gpg --batch --import
gpg --list-secret-keys || true
- name: Create temporary Maven settings.xml
env:
CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }}
CENTRAL_TOKEN: ${{ secrets.CENTRAL_TOKEN }}
run: |
mkdir -p ~/.m2
cat > ~/.m2/settings.xml <<'EOF'
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>ossrh</id>
<username>${env.CENTRAL_USERNAME}</username>
<password>${env.CENTRAL_TOKEN}</password>
</server>
</servers>
</settings>
EOF
- name: Ensure release version
run: |
VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:3.5.0:exec)
echo "Project version: $VERSION"
if echo "$VERSION" | grep -qi SNAPSHOT; then
echo "ERROR: version is SNAPSHOT. Please set a non-SNAPSHOT version before releasing."
exit 1
fi
- name: Deploy to Central Portal
run: |
# 强制设置 GPG 终端环境
export GPG_TTY=$(tty)
mvn -X -B -U \
-DskipTests=true \
-Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} \
-Dgpg.pinentry-mode=loopback \
-Dcentral.token.username=${{ secrets.OSSRH_TOKEN_USERNAME }} \
-Dcentral.token.password=${{ secrets.OSSRH_TOKEN_PASSWORD }} \
clean deploy
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}