|
1 | | -# Publish to Maven Central |
| 1 | +# Publish to Maven Central (Maven) |
2 | 2 |
|
3 | 3 | name: publish |
4 | 4 |
|
|
10 | 10 |
|
11 | 11 | jobs: |
12 | 12 | publish: |
13 | | - |
14 | 13 | runs-on: ubuntu-latest |
15 | 14 |
|
| 15 | + permissions: |
| 16 | + contents: read |
| 17 | + |
16 | 18 | steps: |
17 | 19 | - name: Checkout |
18 | 20 | uses: actions/checkout@v4 |
19 | 21 |
|
20 | | - - name: Set up JDK |
| 22 | + - name: Set up JDK 21 for Maven Central |
21 | 23 | uses: actions/setup-java@v4 |
22 | 24 | with: |
23 | | - distribution: 'adopt' |
| 25 | + distribution: 'temurin' |
24 | 26 | java-version: '21' |
25 | | - cache: 'gradle' |
| 27 | + cache: 'maven' |
| 28 | + |
| 29 | + # Must match <id> in <distributionManagement> |
| 30 | + server-id: ossrh |
| 31 | + |
| 32 | + # These are Maven properties in settings.xml; values come from env below |
| 33 | + server-username: MAVEN_CENTRAL_USERNAME |
| 34 | + server-password: MAVEN_CENTRAL_PASSWORD |
26 | 35 |
|
27 | | - - name: Publish to Maven Central (Portal) |
28 | | - run: | |
29 | | - chmod +x gradlew |
30 | | - ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache |
| 36 | + # GPG setup (uses your in-memory private key) |
| 37 | + gpg-private-key: ${{ secrets.SIGNING_KEY }} |
| 38 | + |
| 39 | + # Name of env var that holds the passphrase (see pom passphraseEnvName) |
| 40 | + gpg-passphrase: MAVEN_GPG_PASSPHRASE |
| 41 | + |
| 42 | + - name: Publish to Maven Central |
| 43 | + run: mvn -B -ntp clean deploy -P release -DskipTests |
31 | 44 | env: |
32 | | - ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} |
33 | | - ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} |
34 | | - ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }} |
35 | | - ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} |
| 45 | + # Sonatype / Central credentials |
| 46 | + MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} |
| 47 | + MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} |
| 48 | + |
| 49 | + # GPG passphrase (referenced by MAVEN_GPG_PASSPHRASE name) |
| 50 | + MAVEN_GPG_PASSPHRASE: ${{ secrets.SIGNING_PASSWORD }} |
0 commit comments