-
Notifications
You must be signed in to change notification settings - Fork 8
163 lines (161 loc) · 5.61 KB
/
ci.yml
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
name: Build & Test
on:
push:
branches:
- main
tags:
- '*'
pull_request:
branches:
- main
jobs:
build:
name: Build & Test
runs-on: macos-13
steps:
- name: Checkout workspace
uses: actions/checkout@v3
timeout-minutes: 5
with:
fetch-depth: 0 # no shallow clones for SonarQube
- name: Set up Java JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17.0.10+7'
- name: Select XCode 15.2
run: |
sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer
xcodebuild -version
- name: Gradle Cache
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
~/.gradle/native
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'build.gradle.kts') }}
restore-keys: ${{ runner.os }}-gradle-
- name: Kotlin Native Cache
uses: actions/cache@v3
with:
path: ~/.konan
key: ${{ runner.os }}-konan-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'build.gradle.kts') }}
restore-keys: ${{ runner.os }}-konan-
- name: Android Cache
uses: actions/cache@v3
with:
path: ~/.android
key: ${{ runner.os }}-android-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'build.gradle.kts') }}
restore-keys: ${{ runner.os }}-android-
- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Build & Test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
chmod +x ./gradlew
./gradlew build test koverXmlReport detekt sonar assembleXCFramework --parallel
- name: Set RELEASE_VERSION variable
run: |
echo "RELEASE_VERSION=$(cat build/version.txt)" >> $GITHUB_ENV
echo ${{ env.RELEASE_VERSION }}
- name: Upload reports
uses: actions/upload-artifact@v3
if: always()
with:
name: reports.zip
path: build/reports
- name: Upload unit test reference files
uses: actions/upload-artifact@v3
if: always()
with:
name: reference_files.zip
path: build/*.*
- name: List files
run: |
ls -lah build/bin/*/releaseExecutable build/libs/ build/outputs/aar/ build/XCFrameworks/release/
- name: Upload kim.jar
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim.jar
path: build/libs/kim-jvm-${{ env.RELEASE_VERSION }}.jar
- name: Upload kim.aar
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim.aar
path: build/outputs/aar/kim-release.aar
- name: Upload kim.xcframework
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim.xcframework
path: build/XCFrameworks/release/kim.xcframework
- name: Upload kim.exe
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim.exe
path: build/bin/win/releaseExecutable/kim.exe
- name: Upload kim-macosX64.kexe
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-macosX64.kexe
path: build/bin/macosX64/releaseExecutable/kim.kexe
- name: Upload kim-macosArm64.kexe
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-macosArm64.kexe
path: build/bin/macosArm64/releaseExecutable/kim.kexe
- name: Upload kim-win-lib.zip
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-win-lib.zip
path: build/bin/win/releaseStatic
- name: Upload kim-linuxArm64.kexe
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-linuxArm64.kexe
path: build/bin/linuxArm64/releaseExecutable/kim.kexe
- name: Upload kim-linuxX64-lib.zip
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-linuxX64-lib.zip
path: build/bin/linuxX64/releaseStatic
- name: Upload kim-linuxX64.kexe
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-linuxX64.kexe
path: build/bin/linuxX64/releaseExecutable/kim.kexe
- name: Upload kim-linuxArm64-lib.zip
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: kim-linuxArm64-lib.zip
path: build/bin/linuxArm64/releaseStatic
- name: Export secring.pgp
if: startsWith(github.ref, 'refs/tags/') # Only for releases
run: |
echo ${{ secrets.SINGING_SECRET_KEY_RING_FILE_CONTENTS }} | base64 --decode > secring.pgp
- name: Publish to Maven Central
if: startsWith(github.ref, 'refs/tags/') # Only for releases
env:
SIGNING_ENABLED: true
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
run: ./gradlew publishAllPublicationsToSonatypeRepository