-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
misc: Set up Kotlin/Native build (#1174)
- Loading branch information
Showing
59 changed files
with
347 additions
and
174 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
name: Setup Build | ||
description: > | ||
Checkout repositories and build dependencies | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Checkout tools | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'aws-kotlin-repo-tools' | ||
repository: 'awslabs/aws-kotlin-repo-tools' | ||
sparse-checkout: | | ||
.github | ||
- name: Checkout aws-crt-kotlin | ||
uses: ./aws-kotlin-repo-tools/.github/actions/checkout-head | ||
with: | ||
# checkout aws-crt-kotlin as a sibling which will automatically make it an included build | ||
path: 'aws-crt-kotlin' | ||
repository: 'awslabs/aws-crt-kotlin' | ||
|
||
# Cache the Kotlin/Native toolchain based on the input Kotlin version from version catalog | ||
# see https://kotlinlang.org/docs/native-improving-compilation-time.html | ||
- name: Cache Kotlin Native toolchain | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
~/.konan | ||
key: ${{ runner.os }}-konan-${{ hashFiles('gradle/libs.versions.toml') }} | ||
restore-keys: | | ||
${{ runner.os }}-konan- | ||
- name: Configure JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: 17 | ||
cache: 'gradle' |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
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: Build and Test on JVM | ||
working-directory: ./smithy-kotlin | ||
shell: bash | ||
run: | | ||
./gradlew -Paws.kotlin.native=false -Ptest.java.version=${{ matrix.java-version }} jvmTest --stacktrace | ||
# macos-14 build and test for targets: jvm, macoArm64, iosSimulatorArm64, watchosSimulatorArm65, tvosSimulatorArm64 | ||
# macos-13 build and test for targets: jvm, macoX64, iosX64, tvosX64, watchosX64 | ||
macos: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [macos-14, macos-13] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'smithy-kotlin' | ||
|
||
- name: Setup build | ||
uses: ./smithy-kotlin/.github/actions/setup-build | ||
|
||
- name: Build and Test on Apple platforms | ||
working-directory: ./smithy-kotlin | ||
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 -Paws.sdk.kotlin.crt.disableCrossCompile=true build | ||
- name: Save Test Reports | ||
if: failure() | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: test-reports-${{ matrix.os }} | ||
path: '**/build/reports' | ||
|
||
# build and test for targets: jvm, linuxX64 | ||
# cross compile for: linuxX64, linuxArm64 | ||
# TODO - add mingw as cross compile target | ||
linux: | ||
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: Configure CRT Docker Images | ||
run: | | ||
./aws-crt-kotlin/docker-images/build-all.sh | ||
- name: Build and Test on Linux with Cross-Compile | ||
working-directory: ./smithy-kotlin | ||
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 build | ||
- name: Save Test Reports | ||
if: failure() | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: test-reports-${{ matrix.os }} | ||
path: '**/build/reports' | ||
|
||
# windows JVM | ||
windows: | ||
runs-on: windows-2022 | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'smithy-kotlin' | ||
|
||
- name: Setup build | ||
uses: ./smithy-kotlin/.github/actions/setup-build | ||
|
||
- name: Build and Test on Windows JVM | ||
working-directory: ./smithy-kotlin | ||
run: | | ||
./gradlew apiCheck | ||
./gradlew -P"aws.sdk.kotlin.crt.disableCrossCompile"=true build | ||
- name: Save Test Reports | ||
if: failure() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: test-reports-windows | ||
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 | ||
working-directory: ./smithy-kotlin | ||
shell: bash | ||
run: | | ||
./gradlew -Paws.kotlin.native=false publishToMavenLocal | ||
./gradlew -Paws.kotlin.native=false 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 | ||
working-directory: ./smithy-kotlin | ||
run: | | ||
# TODO - JVM only | ||
cd $GITHUB_WORKSPACE/smithy-kotlin | ||
./gradlew --parallel -Paws.kotlin.native=false 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 -Paws.kotlin.native=false publishToMavenLocal | ||
./gradlew -Paws.kotlin.native=false test jvmTest | ||
./gradlew -Paws.kotlin.native=false testAllProtocols |
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -47,3 +47,5 @@ gradle-app.setting | |
|
||
# MacOS | ||
.DS_Store | ||
|
||
*.cinteropLibraries.json |
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
Oops, something went wrong.