1
- # .github/workflows/publish.yml
1
+ name : Publish to Maven Central
2
2
3
- name : Publish
4
3
on :
5
4
release :
6
5
types : [released, prereleased]
6
+
7
+ permissions :
8
+ contents : read
9
+
7
10
jobs :
11
+ # First: Run validation steps to ensure everything works
12
+ validate :
13
+ name : Pre-publish Validation
14
+ runs-on : ubuntu-latest
15
+
16
+ steps :
17
+ - name : Check out code
18
+ uses : actions/checkout@v4
19
+
20
+ - name : Validate Gradle Wrapper
21
+ uses : gradle/actions/wrapper-validation@v3
22
+
23
+ - name : Cache Gradle and Konan
24
+ uses : actions/cache@v4
25
+ with :
26
+ path : |
27
+ ~/.konan
28
+ ~/.gradle/caches
29
+ ~/.gradle/wrapper
30
+ key : ${{ runner.os }}-validate-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
31
+
32
+ - name : Set up JDK 17
33
+ uses : actions/setup-java@v4
34
+ with :
35
+ distribution : ' temurin'
36
+ java-version : ' 17'
37
+
38
+ - name : Run Full Build and Tests
39
+ run : ./gradlew build
40
+
41
+ - name : Upload Test Results
42
+ uses : actions/upload-artifact@v4
43
+ if : failure()
44
+ with :
45
+ name : pre-publish-test-results
46
+ path : |
47
+ **/build/reports/tests/
48
+ **/build/test-results/
49
+
8
50
publish :
9
- name : Release build and publish
51
+ name : Publish to Maven Central
10
52
runs-on : macOS-latest
53
+ needs : validate
54
+
11
55
steps :
12
56
- name : Check out code
13
57
uses : actions/checkout@v4
14
- - name : Set up JDK 21
58
+
59
+ - name : Validate Gradle Wrapper
60
+ uses : gradle/actions/wrapper-validation@v3
61
+
62
+ - name : Cache Gradle and Konan
63
+ uses : actions/cache@v4
64
+ with :
65
+ path : |
66
+ ~/.konan
67
+ ~/.gradle/caches
68
+ ~/.gradle/wrapper
69
+ key : ${{ runner.os }}-publish-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
70
+
71
+ - name : Set up JDK 17
15
72
uses : actions/setup-java@v4
16
73
with :
17
- distribution : ' zulu'
18
- java-version : 21
19
- - name : Publish to MavenCentral
20
- run : ./gradlew decimal-formatter-core:publishToMavenCentral --no-configuration-cache
21
- - name : Publish to MavenCentral
22
- run : ./gradlew decimal-formatter-compose:publishToMavenCentral --no-configuration-cache
74
+ distribution : ' temurin'
75
+ java-version : ' 17'
76
+
77
+ - name : Verify project builds successfully
78
+ run : ./gradlew build --no-configuration-cache
79
+
80
+ - name : Publish Core Module to Maven Central
81
+ run : ./gradlew :decimal-formatter-core:publishToMavenCentral --no-configuration-cache
23
82
env :
24
83
ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.MAVEN_CENTRAL_USERNAME }}
25
84
ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
26
85
ORG_GRADLE_PROJECT_signingInMemoryKeyId : ${{ secrets.SIGNING_KEY_ID }}
27
86
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword : ${{ secrets.SIGNING_PASSWORD }}
28
- ORG_GRADLE_PROJECT_signingInMemoryKey : ${{ secrets.GPG_KEY_CONTENTS }}
87
+ ORG_GRADLE_PROJECT_signingInMemoryKey : ${{ secrets.GPG_KEY_CONTENTS }}
88
+
89
+ - name : Publish Compose Module to Maven Central
90
+ run : ./gradlew :decimal-formatter-compose:publishToMavenCentral --no-configuration-cache
91
+ env :
92
+ ORG_GRADLE_PROJECT_mavenCentralUsername : ${{ secrets.MAVEN_CENTRAL_USERNAME }}
93
+ ORG_GRADLE_PROJECT_mavenCentralPassword : ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
94
+ ORG_GRADLE_PROJECT_signingInMemoryKeyId : ${{ secrets.SIGNING_KEY_ID }}
95
+ ORG_GRADLE_PROJECT_signingInMemoryKeyPassword : ${{ secrets.SIGNING_PASSWORD }}
96
+ ORG_GRADLE_PROJECT_signingInMemoryKey : ${{ secrets.GPG_KEY_CONTENTS }}
97
+
98
+ - name : Verify Publications
99
+ run : |
100
+ echo "✅ Core module published successfully"
101
+ echo "✅ Compose module published successfully"
102
+ echo "🎉 Release ${{ github.event.release.tag_name }} published to Maven Central!"
0 commit comments