@@ -8,46 +8,42 @@ concurrency:
88 cancel-in-progress : true
99 group : ${{github.workflow}}-${{github.ref_name}}
1010
11- permissions :
12- packages : write
13- contents : read
14-
1511jobs :
16- gpr :
12+ build :
1713 runs-on : ${{matrix.os}}
18- name : Publish ${{matrix.platform}} packages on GPR
14+ name : Build ${{matrix.platform}} packages
1915 strategy :
2016 fail-fast : false
2117 matrix :
2218 include :
2319 - os : ubuntu-latest
2420 platform : common
2521 targets : >-
26- :kbigint:publishKotlinMultiplatformPublicationToGitHubRepository
27- :kbigint-serialization:publishKotlinMultiplatformPublicationToGitHubRepository
22+ :kbigint:publishKotlinMultiplatformPublicationToLocalRepository
23+ :kbigint-serialization:publishKotlinMultiplatformPublicationToLocalRepository
2824 - os : ubuntu-latest
2925 platform : JVM
30- targets : :kbigint:publishJvmPublicationToGitHubRepository
26+ targets : :kbigint:publishJvmPublicationToLocalRepository
3127 - os : ubuntu-latest
3228 platform : Android
33- targets : :kbigint:publishAndroidReleasePublicationToGitHubRepository
29+ targets : :kbigint:publishAndroidReleasePublicationToLocalRepository
3430 - os : ubuntu-latest
3531 platform : JS
36- target : :kbigint:publishJsPublicationToGitHubRepository
32+ targets : :kbigint:publishJsPublicationToLocalRepository
3733 - os : ubuntu-latest
3834 platform : Linux
3935 targets : >-
40- :kbigint:publishLinuxX64PublicationToGitHubRepository
41- :kbigint:publishLinuxArm64PublicationToGitHubRepository
36+ :kbigint:publishLinuxX64PublicationToLocalRepository
37+ :kbigint:publishLinuxArm64PublicationToLocalRepository
4238 - os : windows-latest
4339 platform : Windows
44- targets : :kbigint:publishMingwX64PublicationToGitHubRepository
40+ targets : :kbigint:publishMingwX64PublicationToLocalRepository
4541 - os : macos-14
4642 platform : macOS/iOS
4743 targets : >-
48- :kbigint:publishMacosX64PublicationToGitHubRepository
49- :kbigint:publishMacosArm64PublicationToGitHubRepository
50- :kbigint:publishIosArm64PublicationToGitHubRepository
44+ :kbigint:publishMacosX64PublicationToLocalRepository
45+ :kbigint:publishMacosArm64PublicationToLocalRepository
46+ :kbigint:publishIosArm64PublicationToLocalRepository
5147 steps :
5248 - name : Checkout repository
5349 uses : actions/checkout@v4
@@ -83,91 +79,51 @@ jobs:
8379 with :
8480 path : ${{runner.tool_cache}}/konan/dependencies
8581 key : konan-${{runner.os}}-dependencies
86- - name : Publish packages
87- run : ./gradlew --no-daemon --info ${{matrix.targets}}
82+ - name : Build packages
83+ run : ./gradlew --no-daemon ${{matrix.targets}}
8884 env :
89- GITHUB_TOKEN : ${{github.token}}
9085 SIGNING_KEY : ${{secrets.SIGNING_KEY}}
9186 SIGNING_PASSWORD : ${{secrets.SIGNING_PASSWORD}}
9287 KONAN_DATA_DIR : ${{runner.tool_cache}}/konan
93- central :
94- runs-on : ${{matrix.os}}
95- name : Publish ${{matrix.platform}} packages on Maven Central
88+ - name : Upload artifacts
89+ uses : actions/upload-artifact@v4
90+ with :
91+ name : kbigint-${{matrix.platform == 'macOS/iOS' && 'macOS-iOS' || matrix.platform}}
92+ path : |
93+ build/repo/**
94+ !build/repo/**/maven-metadata.*
95+ retention-days : 2
96+ publish :
97+ runs-on : ubuntu-latest
98+ name : Publish packages on Maven Central
99+ needs : [build]
96100 environment :
97101 name : sonatype
98- url : https://central.sonatype.com/artifact/io.github.observeroftime/kbigint
99- strategy :
100- fail-fast : false
101- matrix :
102- include :
103- - os : ubuntu-latest
104- platform : common
105- targets : >-
106- :kbigint:publishKotlinMultiplatformPublicationToSonatypeRepository
107- :kbigint-serialization:publishKotlinMultiplatformPublicationToSonatypeRepository
108- - os : ubuntu-latest
109- platform : JVM
110- targets : :kbigint:publishJvmPublicationToSonatypeRepository
111- - os : ubuntu-latest
112- platform : Android
113- targets : :kbigint:publishAndroidReleasePublicationToSonatypeRepository
114- - os : ubuntu-latest
115- platform : JS
116- target : :kbigint:publishJsPublicationToSonatypeRepository
117- - os : ubuntu-latest
118- platform : Linux
119- targets : >-
120- :kbigint:publishLinuxX64PublicationToSonatypeRepository
121- :kbigint:publishLinuxArm64PublicationToSonatypeRepository
122- - os : windows-latest
123- platform : Windows
124- targets : :kbigint:publishMingwX64PublicationToSonatypeRepository
125- - os : macos-14
126- platform : macOS/iOS
127- targets : >-
128- :kbigint:publishMacosX64PublicationToSonatypeRepository
129- :kbigint:publishMacosArm64PublicationToSonatypeRepository
130- :kbigint:publishIosArm64PublicationToSonatypeRepository
102+ url : https://central.sonatype.com/artifact/io.github.observeroftime.kbigint/kbigint
103+ env :
104+ SONATYPE_API : https://central.sonatype.com/api/v1/publisher
105+ SONATYPE_AUTH : " Authorization: Bearer ${{secrets.SONATYPE_TOKEN}}"
131106 steps :
132- - name : Checkout repository
133- uses : actions/checkout @v4
107+ - name : Download artifacts
108+ uses : actions/download-artifact @v4
134109 with :
135- submodules : true
136- - name : Set up Java
137- uses : actions/setup-java@v4
138- with :
139- distribution : temurin
140- java-version : 17
141- cache : gradle
142- cache-dependency-path : |
143- gradle/libs.versions.toml
144- gradle/wrapper/gradle-wrapper.properties
145- - name : Set up cross compilation
146- run : sudo apt-get install -qy {binutils,gcc}-aarch64-linux-gnu
147- if : matrix.platform == 'Linux' || matrix.platform == 'common'
148- - name : Get the cache versions
149- id : versions
150- shell : sh
110+ path : kbigint
111+ pattern : kbigint-*
112+ merge-multiple : true
113+ - name : Upload bundle
151114 run : |-
152- {
153- sed -n 's/kotlin-stdlib = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)"/kotlin=\1.\2.\3/p' gradle/libs.versions.toml
154- } >> "$GITHUB_OUTPUT"
155- - name : Restore Kotlin/Native prebuilt
156- uses : actions/cache/restore@v4
157- with :
158- path : ${{runner.tool_cache}}/konan/kotlin-native-prebuilt-*
159- key : konan-${{runner.os}}-prebuilt-${{steps.versions.outputs.kotlin}}
160- - name : Restore Kotlin/Native dependencies
161- uses : actions/cache/restore@v4
162- if : matrix.platform != 'JVM' && matrix.platform != 'Android' && matrix.platform != 'JS'
163- with :
164- path : ${{runner.tool_cache}}/konan/dependencies
165- key : konan-${{runner.os}}-dependencies
166- - name : Publish packages
167- run : ./gradlew --no-daemon --info ${{matrix.targets}}
168- env :
169- SIGNING_KEY : ${{secrets.SIGNING_KEY}}
170- SIGNING_PASSWORD : ${{secrets.SIGNING_PASSWORD}}
171- SONATYPE_USERNAME : ${{secrets.SONATYPE_USERNAME}}
172- SONATYPE_PASSWORD : ${{secrets.SONATYPE_PASSWORD}}
173- KONAN_DATA_DIR : ${{runner.tool_cache}}/konan
115+ url="$SONATYPE_API/upload?publishingType=USER_MANAGED"
116+ (cd kbigint && zip -qr ../kbigint.zip *)
117+ printf >> "$GITHUB_ENV" 'DEPLOYMENT_ID=%s\n' $(curl -Ssf -Fbundle=@kbigint.zip -H "$SONATYPE_AUTH" "$url")
118+ - name : Verify status
119+ run : |-
120+ url="$SONATYPE_API/status?id=$DEPLOYMENT_ID"
121+ while [[ ${state:=PENDING} == PENDING ]] || [[ $state == VALIDATING ]]; do
122+ state=$(curl -Ssf -XPOST -H "$SONATYPE_AUTH" "$url" | jq -r .deploymentState)
123+ done
124+ if [[ $state == FAILED ]]; then
125+ printf '::error title=Publication failed::Check https://central.sonatype.com/publishing/deployments\n'
126+ exit 1
127+ fi
128+ - name : Publish deployment
129+ run : curl -fi -XPOST -H "$SONATYPE_AUTH" "$SONATYPE_API/deployment/$DEPLOYMENT_ID"
0 commit comments