This repository contains shared tooling for AWS Kotlin repositories:
aws/aws-sdk-kotlin
smithy-lang/smithy-kotlin
aws/aws-crt-kotlin
It contains shared custom Gradle plugins and build logic used to build and release those repositories.
Release
The plugins in this repository are not generally applicable and as such are not published to the
Gradle plugin portal. Instead, they are published to an S3 bucket
hosted by the SDK team and fronted by a CloudFront distribution to create a “private” maven repository that
hosts the released versions of these plugins/artifacts.
The release logic is entirely contained in scripts/release.sh. By default, it will use the latest git tag for the
version that is being released.
To cut a new release:
Go to this repo’s GitHub actions.
Locate the release workflow.
Specify whether the release will be of a kn variant (used for Kotlin Native development).
If you’re doing a minor or major version bump, specify the version override (including “-kn” if a kn variant).
Run the workflow.
The workflow will create a tag, push it to this repo and then start a
CodeBuild release job hosted in the shared tools account (e.g. publish-aws-kotlin-repo-tools).
Old manual release instructions
Create a new tag, e.g. git tag x.y.z.
Push the tag up git push origin x.y.z.
Go to the CodeBuild release job hosted in the shared tools account (e.g. publish-aws-kotlin-repo-tools).
Start a build with overrides.
Under Source connect your GitHub account (Under Source -> Connection Status you should see “You are connected to GitHub”).
Specify the tag you created under Source Version.
Start the build.
Development
Local development
To use a local version of the plugin in downstream projects (such as smithy-kotlin or aws-sdk-kotlin):
Run ./gradlew -Prelease.version=<YOUR_SNAPSHOT_VERSION> publishToMavenLocal
Consume the snapshot plugin version in the projects
Project Structure
:build-plugins:build-support - common build support (publishing, linting, utils, etc)
:build-plugins:kmp-conventions - Plugin that applies common conventions for KMP projects (source sets, targets, etc)
:build-plugins:smithy-build - Opinionated plugin that wraps the smithy-base plugin with a DSL for generating projections dynamically
:ktlint-rules - Custom ktlint rules (consumed by build-support at runtime)
AWS Kotlin Repository Tools
This repository contains shared tooling for AWS Kotlin repositories:
aws/aws-sdk-kotlinsmithy-lang/smithy-kotlinaws/aws-crt-kotlinIt contains shared custom Gradle plugins and build logic used to build and release those repositories.
Release
The plugins in this repository are not generally applicable and as such are not published to the Gradle plugin portal. Instead, they are published to an S3 bucket hosted by the SDK team and fronted by a CloudFront distribution to create a “private” maven repository that hosts the released versions of these plugins/artifacts.
The release logic is entirely contained in
scripts/release.sh. By default, it will use the latest git tag for the version that is being released.To cut a new release:
The workflow will create a tag, push it to this repo and then start a CodeBuild release job hosted in the shared tools account (e.g.
publish-aws-kotlin-repo-tools).Old manual release instructions
git tag x.y.z.git push origin x.y.z.publish-aws-kotlin-repo-tools).Sourceconnect your GitHub account (UnderSource->Connection Statusyou should see “You are connected to GitHub”).Source Version.Development
Local development
To use a local version of the plugin in downstream projects (such as
smithy-kotlinoraws-sdk-kotlin):./gradlew -Prelease.version=<YOUR_SNAPSHOT_VERSION> publishToMavenLocalProject Structure
:build-plugins:build-support- common build support (publishing, linting, utils, etc):build-plugins:kmp-conventions- Plugin that applies common conventions for KMP projects (source sets, targets, etc):build-plugins:smithy-build- Opinionated plugin that wraps thesmithy-baseplugin with a DSL for generating projections dynamically:ktlint-rules- Custom ktlint rules (consumed bybuild-supportat runtime)Security
See CONTRIBUTING for more information.
License
This project is licensed under the Apache-2.0 License.