misc: Set up Kotlin/Native build #3221
This file contains 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: | |
push: | |
branches: [ main ] | |
pull_request: | |
workflow_dispatch: | |
# Allow one instance of this workflow per pull request, and cancel older runs when new changes are pushed | |
concurrency: | |
group: ci-pr-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
RUN: ${{ github.run_id }}-${{ github.run_number }} | |
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dkotlin.incremental=false" | |
jobs: | |
jvm: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# we build with a specific JDK version but source/target compatibility should ensure the jar is usable by | |
# the target versions we want to support | |
java-version: | |
- 8 | |
- 11 | |
- 17 | |
- 21 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
path: 'smithy-kotlin' | |
- name: Setup build | |
uses: ./smithy-kotlin/.github/actions/setup-build | |
- name: Test | |
shell: bash | |
run: | | |
./gradlew -Ptest.java.version=${{ matrix.java-version }} jvmTest --stacktrace | |
all-platforms: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
path: 'smithy-kotlin' | |
- name: Setup build | |
uses: ./smithy-kotlin/.github/actions/setup-build | |
- name: Test | |
shell: bash | |
run: | | |
# FIXME K2. Re-enable warnings as errors after this warning is removed: https://youtrack.jetbrains.com/issue/KT-68532 | |
# echo "kotlinWarningsAsErrors=true" >> $GITHUB_WORKSPACE/local.properties | |
./gradlew apiCheck | |
./gradlew allTests | |
- name: Save Test Reports | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-reports-${{ matrix.os }} | |
path: '**/build/reports' | |
protocol-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
path: 'smithy-kotlin' | |
- name: Setup build | |
uses: ./smithy-kotlin/.github/actions/setup-build | |
- name: Test | |
shell: bash | |
run: | | |
./gradlew publishToMavenLocal | |
./gradlew testAllProtocols | |
downstream: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
with: | |
path: 'smithy-kotlin' | |
- name: Setup build | |
uses: ./smithy-kotlin/.github/actions/setup-build | |
- name: Checkout aws-sdk-kotlin | |
uses: ./aws-kotlin-repo-tools/.github/actions/checkout-head | |
with: | |
# smithy-kotlin is checked out as a sibling dir which will automatically make it an included build | |
path: 'aws-sdk-kotlin' | |
repository: 'awslabs/aws-sdk-kotlin' | |
- name: Build and Test aws-sdk-kotlin downstream | |
run: | | |
# TODO - JVM only | |
cd $GITHUB_WORKSPACE/smithy-kotlin | |
./gradlew --parallel publishToMavenLocal | |
SMITHY_KOTLIN_RUNTIME_VERSION=$(grep sdkVersion= gradle.properties | cut -d = -f 2) | |
SMITHY_KOTLIN_CODEGEN_VERSION=$(grep codegenVersion= gradle.properties | cut -d = -f 2) | |
cd $GITHUB_WORKSPACE/aws-sdk-kotlin | |
# replace smithy-kotlin-runtime-version and smithy-kotlin-codegen-version to be | |
# whatever we are testing such that the protocol test projects don't fail with a | |
# version that doesn't exist locally or in maven central. Otherwise the generated | |
# protocol test projects will use whatever the SDK thinks the version of | |
# smithy-kotlin should be | |
sed -i "s/smithy-kotlin-runtime-version = .*$/smithy-kotlin-runtime-version = \"$SMITHY_KOTLIN_RUNTIME_VERSION\"/" gradle/libs.versions.toml | |
sed -i "s/smithy-kotlin-codegen-version = .*$/smithy-kotlin-codegen-version = \"$SMITHY_KOTLIN_CODEGEN_VERSION\"/" gradle/libs.versions.toml | |
./gradlew --parallel publishToMavenLocal | |
./gradlew test jvmTest | |
./gradlew testAllProtocols |