-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
205 additions
and
0 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,32 @@ | ||
name: API compatibility verification | ||
|
||
on: | ||
pull_request: | ||
types: [ opened, synchronize, reopened, labeled, unlabeled ] | ||
branches: [ main ] | ||
|
||
jobs: | ||
api-compat-verification: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Check for API compatibility | ||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'acknowledge-api-break') }} | ||
run: | | ||
git fetch origin ${{ github.base_ref }} --depth 1 && \ | ||
git diff remotes/origin/${{ github.base_ref }} --numstat "*.api" | awk ' | ||
BEGIN { s = 0 } | ||
# git diff numstat shows lines deleted in field 2, hence sum up field 2 across all items | ||
{ s += $2 } | ||
# exit with the number of lines deleted as the result code so that `if failure()` works below | ||
END { exit s } | ||
' | ||
- name: Error message | ||
if: ${{ failure() }} | ||
run: | | ||
echo "::error ::This change modifies the public API in a way that may be backwards-incompatible. Carefully review this pull request and either:" | ||
echo "::error ::* Revert the changes which caused the API incompatibility –or–" | ||
echo "::error ::* Add the 'acknowledge-api-break' label to this PR (in rare cases warranting an API breakage)" | ||
exit 1 |
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,24 @@ | ||
name: Changelog verification | ||
|
||
on: | ||
pull_request: | ||
types: [ opened, synchronize, reopened, labeled, unlabeled ] | ||
branches: [ main ] | ||
|
||
jobs: | ||
changelog-verification: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Check for changelog entry | ||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-changelog') }} | ||
run: | | ||
git fetch origin ${{ github.base_ref }} --depth 1 && \ | ||
git diff remotes/origin/${{ github.base_ref }} --name-only | grep -P "\.changes/[0-9a-f-]+\.json" | ||
- name: Error message | ||
if: ${{ failure() }} | ||
run: | | ||
echo "::error ::No new/updated changelog entry found in /.changes directory. Please either:" | ||
echo "::error ::* Add a changelog entry (see CONTRIBUTING.md for instructions) –or–" | ||
echo "::error ::* Add the 'no-changelog' label to this PR (in rare cases not warranting a changelog entry)" | ||
exit 1 |
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,132 @@ | ||
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 | ||
- name: Configure JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: 17 | ||
cache: 'gradle' | ||
- 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 | ||
- name: Configure JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: 17 | ||
cache: 'gradle' | ||
- name: Test | ||
shell: bash | ||
run: | | ||
echo "kotlinWarningsAsErrors=true" >> $GITHUB_WORKSPACE/local.properties | ||
./gradlew apiCheck | ||
./gradlew test jvmTest | ||
- 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 | ||
- name: Configure JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: 17 | ||
cache: 'gradle' | ||
- 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: Checkout tools | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'aws-kotlin-repo-tools' | ||
repository: 'awslabs/aws-kotlin-repo-tools' | ||
ref: '0.2.3' | ||
sparse-checkout: | | ||
.github | ||
- 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: Configure JDK | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: 17 | ||
cache: 'gradle' | ||
- 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 |
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,17 @@ | ||
name: Dependabot Dependency Submission | ||
|
||
on: | ||
push: | ||
branches: [ main ] | ||
|
||
permissions: | ||
contents: write | ||
|
||
jobs: | ||
dependency-submission: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v4 | ||
- name: Generate and submit dependency graph | ||
uses: gradle/actions/dependency-submission@v3 |