Skip to content

Commit 7d5786d

Browse files
committed
feat: add publish maven central repo workflow
1 parent c1d50a9 commit 7d5786d

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: publish_maven_central_repo.yml
2+
on:
3+
release:
4+
types: [published]
5+
6+
jobs:
7+
publish:
8+
runs-on: ubuntu-latest
9+
10+
permissions:
11+
contents: write
12+
id-token: write
13+
attestations: write
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v4
18+
19+
- id: install-secret-key
20+
name: Install gpg secret key
21+
run: |
22+
cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import
23+
24+
- name: Set up Maven Central Repository
25+
uses: actions/setup-java@v4
26+
with:
27+
java-version: '8'
28+
distribution: 'temurin'
29+
server-id: central
30+
server-username: MAVEN_USERNAME
31+
server-password: MAVEN_PASSWORD
32+
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
33+
gpg-passphrase: MAVEN_GPG_PASSPHRASE
34+
35+
- name: Extract Maven Artifacts
36+
id: maven_artifact
37+
run: |
38+
echo "version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
39+
echo "artifactId=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_OUTPUT
40+
41+
- name: Build Java Project
42+
run: mvn clean package -ntp
43+
44+
- name: Publish package
45+
run: |
46+
mvn \
47+
--no-transfer-progress \
48+
--batch-mode \
49+
-Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} \
50+
clean deploy -P release-sign-artifacts -e
51+
env:
52+
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
53+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
54+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
55+
56+
- name: Publish Java Artifacts to GitHub Release
57+
run: |
58+
cp pom.xml ${{ steps.maven_artifact.outputs.artifactId }}-${{ steps.maven_artifact.outputs.version }}.pom
59+
gh release upload ${{github.event.release.tag_name}} "${{ steps.maven_artifact.outputs.artifactId }}-${{ steps.maven_artifact.outputs.version }}.pom"
60+
for jar in target/*.jar; do
61+
[ -e "$jar" ] || continue
62+
gh release upload ${{github.event.release.tag_name}} "$jar"
63+
done
64+
env:
65+
GITHUB_TOKEN: ${{ github.TOKEN }}
66+
67+
- name: GitHub Attestation for JAR files
68+
uses: actions/attest-build-provenance@v2
69+
with:
70+
subject-path: "target/*.jar"
71+
72+
- name: GitHub Attestation for POM file
73+
uses: actions/attest-build-provenance@v2
74+
with:
75+
subject-path: "pom.xml"
76+
subject-name: "${{ steps.maven_artifact.outputs.artifactId }}-${{ steps.maven_artifact.outputs.version }}.pom"

0 commit comments

Comments
 (0)