feat: Kotlin Multiplatform with iOS support, Maven Central publishing, and publication-quality polish #36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| branches: [main, master] | |
| push: | |
| branches: [main, master] | |
| jobs: | |
| kotlin: | |
| name: Kotlin | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: true | |
| - name: Validate Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v4 | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: 17 | |
| - name: Cache Gradle | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('kotlin/**/*.gradle*', 'kotlin/gradle/libs.versions.toml') }} | |
| restore-keys: ${{ runner.os }}-gradle- | |
| - name: Test | |
| working-directory: kotlin | |
| run: ./gradlew jvmTest --quiet | |
| - name: API compatibility check | |
| working-directory: kotlin | |
| run: ./gradlew apiCheck --quiet | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: kotlin-test-results | |
| path: kotlin/build/reports/tests/ | |
| swift: | |
| name: Swift | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: true | |
| - name: Test | |
| working-directory: swift | |
| run: swift test | |
| python: | |
| name: Python | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: true | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install deps | |
| run: pip install pytest protobuf zstandard | |
| - name: Test | |
| working-directory: python | |
| run: python -m pytest tests/ -v | |
| typescript: | |
| name: TypeScript | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: true | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: 20 | |
| - name: Install deps | |
| working-directory: typescript | |
| run: rm -f package-lock.json && npm install | |
| - name: Test | |
| working-directory: typescript | |
| run: npx vitest run | |
| csharp: | |
| name: C# | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: true | |
| - uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: "9.0.x" | |
| - name: Test | |
| working-directory: csharp | |
| run: dotnet test --verbosity normal |