-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (124 loc) · 5.21 KB
/
Copy pathrelease.yml
File metadata and controls
142 lines (124 loc) · 5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Release
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: "Release version"
required: true
type: string
jobs:
release:
name: Release to Maven Central
runs-on: ubuntu-latest
if: github.repository == 'inqwise/inqwise-async'
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: 21
distribution: "temurin"
cache: maven
server-id: sonatype-oss-release
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Configure Git user
run: |
git config --global user.email "action@github.com"
git config --global user.name "GitHub Action"
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
- name: Build and test
run: mvn clean test
- name: Maven Release (Manual Trigger)
if: github.event_name == 'workflow_dispatch'
run: |
NEXT_VERSION=$(echo ${{ github.event.inputs.version }} | awk -F. '{$NF = $NF + 1; print}' OFS=.)
mvn release:clean release:prepare release:perform \
-DreleaseVersion=${{ github.event.inputs.version }} \
-DdevelopmentVersion=${NEXT_VERSION}-SNAPSHOT \
-Dtag=v${{ github.event.inputs.version }} \
-DskipTests
env:
MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Deploy to Maven Central (Tag-based Release)
if: github.event_name == 'release'
run: mvn clean deploy -P sonatype-oss-release -DskipTests
env:
MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Prepare Release Assets
run: |
# The Maven release process already built the correct artifacts
# We need to find them in the Maven local repository after release:perform
VERSION="${{ github.event.inputs.version }}"
MAVEN_REPO="$HOME/.m2/repository/com/inqwise/async/inqwise-async/$VERSION"
mkdir -p release-assets
# Copy the release artifacts from Maven local repository
if [ -d "$MAVEN_REPO" ]; then
cp "$MAVEN_REPO/inqwise-async-$VERSION.jar" release-assets/ || echo "Main JAR not found"
cp "$MAVEN_REPO/inqwise-async-$VERSION-sources.jar" release-assets/ || echo "Sources JAR not found"
cp "$MAVEN_REPO/inqwise-async-$VERSION-javadoc.jar" release-assets/ || echo "Javadoc JAR not found"
else
echo "Maven repository directory not found: $MAVEN_REPO"
echo "Falling back to building artifacts with correct version"
# Checkout the release tag to build the correct version
git checkout "v$VERSION"
mvn clean package -P sonatype-oss-release -DskipTests
cp target/inqwise-async-*.jar release-assets/
fi
# List what we actually have
echo "Release assets prepared:"
ls -la release-assets/
env:
MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Create GitHub Release (Manual Trigger)
if: github.event_name == 'workflow_dispatch'
uses: softprops/action-gh-release@v3
with:
tag_name: v${{ github.event.inputs.version }}
name: Release v${{ github.event.inputs.version }}
body: |
🚀 **Release v${{ github.event.inputs.version }}**
## 📦 Maven Central
```xml
<dependency>
<groupId>com.inqwise.async</groupId>
<artifactId>inqwise-async</artifactId>
<version>${{ github.event.inputs.version }}</version>
</dependency>
```
## 📋 Release Assets
- Main library JAR
- Sources JAR
- Javadoc JAR
- All artifacts GPG signed
## 🔗 Links
- [Maven Central](https://central.sonatype.com/artifact/com.inqwise.async/inqwise-async/${{ github.event.inputs.version }})
- [Documentation](https://github.com/inqwise/inqwise-async#readme)
---
*Released automatically via GitHub Actions*
files: release-assets/*
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Assets (Existing Release)
if: github.event_name == 'release'
uses: softprops/action-gh-release@v3
with:
files: release-assets/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}