1+ name : Publish to Maven Central
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*'
7+ branches :
8+ - ' feature/release-*'
9+
10+ jobs :
11+ publish :
12+ runs-on : ubuntu-latest
13+ steps :
14+ - name : Checkout code
15+ uses : actions/checkout@v4
16+ with :
17+ fetch-depth : 0
18+
19+ - name : Set up JDK 8
20+ uses : actions/setup-java@v4
21+ with :
22+ java-version : ' 8'
23+ distribution : ' temurin'
24+ cache : maven
25+
26+ - name : Setup GPG
27+ run : |
28+ echo "Setting up GPG..."
29+ mkdir -p ~/.gnupg
30+ chmod 700 ~/.gnupg
31+
32+ # Import private key
33+ echo "${{ secrets.GPG_PRIVATE_KEY }}" > private.key
34+ echo "Importing GPG key..."
35+ gpg --batch --import private.key
36+ rm private.key
37+
38+ # Configure GPG
39+ echo "Configuring GPG..."
40+ cat > ~/.gnupg/gpg.conf << EOF
41+ default-key ${{ secrets.GPG_KEYNAME }}
42+ use-agent
43+ pinentry-mode loopback
44+ EOF
45+
46+ # Debug information
47+ echo "=== GPG Keys ==="
48+ gpg --list-secret-keys --keyid-format LONG
49+ gpg --list-keys --keyid-format LONG
50+
51+ - name : Configure Maven
52+ run : |
53+ mkdir -p ~/.m2
54+ cat > ~/.m2/settings.xml << EOF
55+ <settings>
56+ <servers>
57+ <server>
58+ <id>central</id>
59+ <username>${{ secrets.OSSRH_USERNAME_TOKEN }}</username>
60+ <password>${{ secrets.OSSRH_PASSWORD_TOKEN }}</password>
61+ </server>
62+ </servers>
63+ <profiles>
64+ <profile>
65+ <id>central</id>
66+ <activation>
67+ <activeByDefault>true</activeByDefault>
68+ </activation>
69+ <properties>
70+ <gpg.executable>gpg</gpg.executable>
71+ <gpg.passphrase>${{ secrets.GPG_PASSPHRASE }}</gpg.passphrase>
72+ </properties>
73+ </profile>
74+ </profiles>
75+ </settings>
76+ EOF
77+
78+ - name : Build and Publish
79+ env :
80+ OSSRH_USERNAME : ${{ secrets.OSSRH_USERNAME_TOKEN }}
81+ OSSRH_PASSWORD : ${{ secrets.OSSRH_PASSWORD_TOKEN }}
82+ GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
83+ run : |
84+ echo "Starting Maven build and deploy..."
85+ mvn clean deploy -P release \
86+ -Dmaven.javadoc.skip=false \
87+ -Dmaven.deploy.skip=false \
88+ -Dgpg.keyname=${{ secrets.GPG_KEYNAME }} \
89+ -Dgpg.useagent=true \
90+ -Dmaven.test.failure.ignore=false \
91+ -DaltDeploymentRepository=ossrh::default::https://central.sonatype.com/api/v1/publisher/upload \
92+ -DrepositoryId=ossrh \
93+ -Dusername=${{ secrets.OSSRH_USERNAME_TOKEN }} \
94+ -Dpassword=${{ secrets.OSSRH_PASSWORD_TOKEN }}
0 commit comments