Skip to content

Commit e3b4b9f

Browse files
authored
ci(release): publish Java SDK from GitHub releases (#33)
1 parent 7fcde05 commit e3b4b9f

4 files changed

Lines changed: 67 additions & 49 deletions

File tree

.github/workflows/release-to-discord.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
name: Release to Discord
22

33
on:
4-
workflow_run:
5-
workflows: ["Release"]
6-
types: [completed]
4+
release:
5+
types: [published]
76
workflow_dispatch:
87

98
jobs:
109
github-releases-to-discord:
1110
runs-on: ubuntu-latest
12-
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
1311
steps:
1412
- name: Checkout
1513
uses: actions/checkout@v6

.github/workflows/release.yml

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
name: Release
22

33
on:
4-
push:
5-
branches: [main]
6-
workflow_dispatch:
4+
release:
5+
types: [published]
76

87
permissions:
9-
contents: write
10-
id-token: write
8+
contents: read
9+
10+
concurrency:
11+
group: release-${{ github.event.release.tag_name }}
12+
cancel-in-progress: false
1113

1214
jobs:
1315
test:
@@ -20,6 +22,8 @@ jobs:
2022
steps:
2123
- name: Checkout code
2224
uses: actions/checkout@v6
25+
with:
26+
ref: ${{ github.event.release.tag_name }}
2327

2428
- name: Set up JDK ${{ matrix.java }}
2529
uses: actions/setup-java@v5
@@ -38,14 +42,12 @@ jobs:
3842
name: Release
3943
runs-on: ubuntu-latest
4044
needs: test
41-
if: github.ref == 'refs/heads/main'
4245

4346
steps:
4447
- name: Checkout code
4548
uses: actions/checkout@v6
4649
with:
47-
fetch-depth: 0
48-
token: ${{ secrets.GITHUB_TOKEN }}
50+
ref: ${{ github.event.release.tag_name }}
4951

5052
- name: Set up JDK 17
5153
uses: actions/setup-java@v5
@@ -54,30 +56,39 @@ jobs:
5456
distribution: 'temurin'
5557
cache: 'gradle'
5658

57-
- name: Setup Node.js
58-
uses: actions/setup-node@v6
59-
with:
60-
node-version: 20
61-
62-
- name: Install semantic-release
63-
run: npm install -g semantic-release @semantic-release/changelog @semantic-release/git @semantic-release/exec
64-
6559
- name: Grant execute permission for gradlew
6660
run: chmod +x gradlew
6761

68-
- name: Configure Git
62+
- name: Prepare release version
63+
env:
64+
RELEASE_TAG: ${{ github.event.release.tag_name }}
6965
run: |
70-
git config user.name "github-actions[bot]"
71-
git config user.email "github-actions[bot]@users.noreply.github.com"
66+
version="${RELEASE_TAG#v}"
7267
73-
- name: Release
68+
if ! [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?$ ]]; then
69+
echo "Release tag must look like v1.2.3 or 1.2.3, got '${RELEASE_TAG}'"
70+
exit 1
71+
fi
72+
73+
echo "RELEASE_VERSION=$version" >> "$GITHUB_ENV"
74+
perl -0pi -e "s/^version = '.*'$/version = '$version'/m" build.gradle
75+
RELEASE_VERSION="$version" perl -0pi -e 's|(<artifactId>lettermint</artifactId>\s*<version>)[^<]+(</version>)|$1$ENV{RELEASE_VERSION}$2|' pom.xml
76+
77+
- name: Publish to Maven Central
7478
env:
75-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
7679
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
7780
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
7881
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_KEY_ID }}
7982
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_PASSPHRASE }}
8083
GPG_PRIVATE_KEY_BASE64: ${{ secrets.GPG_PRIVATE_KEY }}
8184
run: |
8285
export ORG_GRADLE_PROJECT_signingKey=$(echo "$GPG_PRIVATE_KEY_BASE64" | base64 -d)
83-
npx semantic-release
86+
./gradlew publish --no-daemon
87+
88+
- name: Release staging repository
89+
env:
90+
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
91+
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
92+
run: |
93+
curl --fail-with-body -X POST -u "$OSSRH_USERNAME:$OSSRH_PASSWORD" \
94+
https://ossrh-staging-api.central.sonatype.com/manual/upload/defaultRepository/co.lettermint
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Update Changelog
2+
3+
on:
4+
release:
5+
types: [released]
6+
7+
permissions:
8+
contents: write
9+
10+
jobs:
11+
update:
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 5
14+
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v6
18+
with:
19+
ref: main
20+
21+
- name: Update Changelog
22+
uses: stefanzweifel/changelog-updater-action@v1
23+
with:
24+
latest-version: ${{ github.event.release.name }}
25+
release-notes: ${{ github.event.release.body }}
26+
27+
- name: Commit updated CHANGELOG
28+
uses: stefanzweifel/git-auto-commit-action@v7
29+
with:
30+
branch: main
31+
commit_message: Update CHANGELOG
32+
file_pattern: CHANGELOG.md

.releaserc.json

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)