From d394813ac82679972d49a2f86e49e2e736f5afa6 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 3 Oct 2025 15:25:29 -0400 Subject: [PATCH 1/9] misc: refactor artifact size metrics --- .github/workflows/artifact-size-metrics.yml | 76 --------------------- .github/workflows/pull-request-metrics.yml | 32 +++++++++ .github/workflows/release-metrics.yml | 29 ++++++++ 3 files changed, 61 insertions(+), 76 deletions(-) delete mode 100644 .github/workflows/artifact-size-metrics.yml create mode 100644 .github/workflows/pull-request-metrics.yml create mode 100644 .github/workflows/release-metrics.yml diff --git a/.github/workflows/artifact-size-metrics.yml b/.github/workflows/artifact-size-metrics.yml deleted file mode 100644 index 03571e1d5..000000000 --- a/.github/workflows/artifact-size-metrics.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Artifact Size Metrics -on: - pull_request: - types: [ opened, synchronize, reopened, labeled, unlabeled ] - branches: - - main - - '*-main' - release: - types: [published] - -permissions: - id-token: write - contents: read - pull-requests: write - -jobs: - release-metrics: - if: github.event_name == 'release' - 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: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - - name: Configure Gradle - uses: aws/aws-kotlin-repo-tools/.github/actions/configure-gradle@main - - name: Generate Artifact Size Metrics - run: ./gradlew artifactSizeMetrics - - name: Save Artifact Size Metrics - run: ./gradlew saveArtifactSizeMetrics -Prelease=${{ github.event.release.tag_name }} - - name: Put Artifact Size Metrics in CloudWatch - run: ./gradlew putArtifactSizeMetricsInCloudWatch -Prelease=${{ github.event.release.tag_name }} - size-check: - 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: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} - aws-region: us-west-2 - - name: Configure Gradle - uses: aws/aws-kotlin-repo-tools/.github/actions/configure-gradle@main - - name: Generate Artifact Size Metrics - run: ./gradlew artifactSizeMetrics - - name: Analyze Artifact Size Metrics - run: ./gradlew analyzeArtifactSizeMetrics - - - name: Show Results - uses: aws/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/show-results@main - - - name: Evaluate - if: ${{ !contains(github.event.pull_request.labels.*.name, 'acknowledge-artifact-size-increase') }} - run: | - cd build/reports/metrics - cat has-significant-change.txt | grep false || { - echo An artifact increased in size by more than allowed or a new artifact was created. - echo If this is expected please add the 'acknowledge-artifact-size-increase' label to this pull request. - exit 1 - } \ No newline at end of file diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml new file mode 100644 index 000000000..fa0220084 --- /dev/null +++ b/.github/workflows/pull-request-metrics.yml @@ -0,0 +1,32 @@ +name: Pull request metrics +on: + pull_request: + +jobs: + artifact-size-metrics: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Configure Gradle + uses: awslabs/aws-kotlin-repo-tools/.github/actions/configure-gradle@main + + - name: Build + shell: bash + run: | + ./gradlew build + ./gradlew publishAllPublicationsToTestLocalRepository + + - name: Calculate metrics + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@asm-v2 # TODO: Change to main before merging + with: + upload: 'false' + release_metrics: 'false' + + - name: Process metrics + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/download-and-process@asm-v2 # TODO: Change to main before merging + with: + download: 'false' + +permissions: {} \ No newline at end of file diff --git a/.github/workflows/release-metrics.yml b/.github/workflows/release-metrics.yml new file mode 100644 index 000000000..e3dfe9c28 --- /dev/null +++ b/.github/workflows/release-metrics.yml @@ -0,0 +1,29 @@ +name: Release metrics + +on: + release: + types: [ published ] + +jobs: + artifact-size-metrics: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Configure Gradle + uses: awslabs/aws-kotlin-repo-tools/.github/actions/configure-gradle@main + + - name: Build + shell: bash + run: | + ./gradlew build + ./gradlew publishAllPublicationsToTestLocalRepository + + - name: Calculate and upload metrics + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@asm-v2 # TODO: Change to main before merging + with: + upload: 'true' + release_metrics: 'true' + +permissions: {} \ No newline at end of file From eb85f52b3c7e7742eaba34a044b753f3dbe86654 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 3 Oct 2025 15:27:19 -0400 Subject: [PATCH 2/9] self review --- .github/workflows/pull-request-metrics.yml | 2 +- .github/workflows/release-metrics.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml index fa0220084..1fc104153 100644 --- a/.github/workflows/pull-request-metrics.yml +++ b/.github/workflows/pull-request-metrics.yml @@ -29,4 +29,4 @@ jobs: with: download: 'false' -permissions: {} \ No newline at end of file +permissions: {} diff --git a/.github/workflows/release-metrics.yml b/.github/workflows/release-metrics.yml index e3dfe9c28..6ac8f3eb4 100644 --- a/.github/workflows/release-metrics.yml +++ b/.github/workflows/release-metrics.yml @@ -26,4 +26,4 @@ jobs: upload: 'true' release_metrics: 'true' -permissions: {} \ No newline at end of file +permissions: {} From a6b58155836e136992191a4dce675338cb488e94 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 8 Oct 2025 13:38:34 -0400 Subject: [PATCH 3/9] feedback --- .github/workflows/pull-request-metrics.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml index 1fc104153..1f5434adf 100644 --- a/.github/workflows/pull-request-metrics.yml +++ b/.github/workflows/pull-request-metrics.yml @@ -15,8 +15,8 @@ jobs: - name: Build shell: bash run: | - ./gradlew build - ./gradlew publishAllPublicationsToTestLocalRepository + ./gradlew build --parallel + ./gradlew publishAllPublicationsToTestLocalRepository --parallel - name: Calculate metrics uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@asm-v2 # TODO: Change to main before merging From 5d36c109a57cb70de2eece51a4e512a00c4b81a1 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 8 Oct 2025 14:06:07 -0400 Subject: [PATCH 4/9] fix merge conflict? From 45fcb3ac50bf78a0c10913b6a46381142ef78f98 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 8 Oct 2025 14:08:58 -0400 Subject: [PATCH 5/9] self review --- .github/workflows/release-metrics.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-metrics.yml b/.github/workflows/release-metrics.yml index 6ac8f3eb4..fa92461be 100644 --- a/.github/workflows/release-metrics.yml +++ b/.github/workflows/release-metrics.yml @@ -17,8 +17,8 @@ jobs: - name: Build shell: bash run: | - ./gradlew build - ./gradlew publishAllPublicationsToTestLocalRepository + ./gradlew build --parallel + ./gradlew publishAllPublicationsToTestLocalRepository --parallel - name: Calculate and upload metrics uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@asm-v2 # TODO: Change to main before merging From 102105e3fb7d633cf9321a29b09557c68fc6cedc Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 17 Oct 2025 16:55:44 -0400 Subject: [PATCH 6/9] configure credentials before getting latest metrics --- .github/workflows/pull-request-metrics.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml index 1f5434adf..f6aea4b21 100644 --- a/.github/workflows/pull-request-metrics.yml +++ b/.github/workflows/pull-request-metrics.yml @@ -24,6 +24,12 @@ jobs: upload: 'false' release_metrics: 'false' + - name: Configure credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + - name: Process metrics uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/download-and-process@asm-v2 # TODO: Change to main before merging with: From 8875a7463ba3b79e6dedc9e81e69df54da74e1bb Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 17 Oct 2025 17:15:55 -0400 Subject: [PATCH 7/9] fix permissions --- .github/workflows/pull-request-metrics.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml index f6aea4b21..9b1053831 100644 --- a/.github/workflows/pull-request-metrics.yml +++ b/.github/workflows/pull-request-metrics.yml @@ -35,4 +35,6 @@ jobs: with: download: 'false' -permissions: {} +permissions: + id-token: write + contents: read From e3426d8cd13ea0e3072791da7a84285775676f84 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 17 Oct 2025 17:45:33 -0400 Subject: [PATCH 8/9] rerun workflows after populating metric bucket From 84b0684c95758ec863e786580530e226163a8f1a Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 17 Oct 2025 18:30:15 -0400 Subject: [PATCH 9/9] change action branch to main and delete old plugin --- .github/workflows/pull-request-metrics.yml | 4 ++-- .github/workflows/release-metrics.yml | 12 ++++++++++-- build.gradle.kts | 7 ------- gradle/libs.versions.toml | 1 - 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml index 9b1053831..11c4d6890 100644 --- a/.github/workflows/pull-request-metrics.yml +++ b/.github/workflows/pull-request-metrics.yml @@ -19,7 +19,7 @@ jobs: ./gradlew publishAllPublicationsToTestLocalRepository --parallel - name: Calculate metrics - uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@asm-v2 # TODO: Change to main before merging + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@main with: upload: 'false' release_metrics: 'false' @@ -31,7 +31,7 @@ jobs: aws-region: us-west-2 - name: Process metrics - uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/download-and-process@asm-v2 # TODO: Change to main before merging + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/download-and-process@main with: download: 'false' diff --git a/.github/workflows/release-metrics.yml b/.github/workflows/release-metrics.yml index fa92461be..bf9197f14 100644 --- a/.github/workflows/release-metrics.yml +++ b/.github/workflows/release-metrics.yml @@ -20,10 +20,18 @@ jobs: ./gradlew build --parallel ./gradlew publishAllPublicationsToTestLocalRepository --parallel + - name: Configure credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.CI_AWS_ROLE_ARN }} + aws-region: us-west-2 + - name: Calculate and upload metrics - uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@asm-v2 # TODO: Change to main before merging + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@main with: upload: 'true' release_metrics: 'true' -permissions: {} +permissions: + id-token: write + contents: read diff --git a/build.gradle.kts b/build.gradle.kts index 2fcc09c1d..fee4cfaf2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,19 +41,12 @@ buildscript { plugins { `dokka-convention` alias(libs.plugins.kotlinx.binary.compatibility.validator) - alias(libs.plugins.aws.kotlin.repo.tools.artifactsizemetrics) // ensure the correct version of KGP ends up on our buildscript classpath // since build-plugins also has version in its dependency closure id(libs.plugins.kotlin.multiplatform.get().pluginId) apply false id(libs.plugins.kotlin.jvm.get().pluginId) apply false } -artifactSizeMetrics { - artifactPrefixes = setOf(":runtime") - significantChangeThresholdPercentage = 5.0 - projectRepositoryName = "smithy-kotlin" -} - val testJavaVersion = typedProp("test.java.version")?.let { JavaLanguageVersion.of(it) }?.also { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a5b616c59..d1e32fa17 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -118,4 +118,3 @@ kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-co kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-version"} aws-kotlin-repo-tools-kmp = { id = "aws.sdk.kotlin.gradle.kmp", version.ref = "aws-kotlin-repo-tools-version" } aws-kotlin-repo-tools-smithybuild = { id = "aws.sdk.kotlin.gradle.smithybuild", version.ref = "aws-kotlin-repo-tools-version" } -aws-kotlin-repo-tools-artifactsizemetrics = { id = "aws.sdk.kotlin.gradle.artifactsizemetrics", version.ref = "aws-kotlin-repo-tools-version" }