diff --git a/.github/workflows/artifact-size-metrics.yml b/.github/workflows/artifact-size-metrics.yml deleted file mode 100644 index faf45689..00000000 --- a/.github/workflows/artifact-size-metrics.yml +++ /dev/null @@ -1,65 +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 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: - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - steps: - - name: Checkout Sources - uses: actions/checkout@v4 - - 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 -Paws.kotlin.native=false 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 - } diff --git a/.github/workflows/pull-request-metrics.yml b/.github/workflows/pull-request-metrics.yml new file mode 100644 index 00000000..4229c194 --- /dev/null +++ b/.github/workflows/pull-request-metrics.yml @@ -0,0 +1,41 @@ +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: | + echo "FIXME: Enable K/N builds - then capture KN artifact metrics" + ./gradlew -Paws.kotlin.native=false build --parallel + ./gradlew -Paws.kotlin.native=false publishAllPublicationsToTestLocalRepository --parallel + + - name: Calculate metrics + uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/calculate-and-upload@main + with: + 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@main + with: + download: 'false' + +permissions: + id-token: write + contents: read diff --git a/.github/workflows/release-metrics.yml b/.github/workflows/release-metrics.yml new file mode 100644 index 00000000..7d424694 --- /dev/null +++ b/.github/workflows/release-metrics.yml @@ -0,0 +1,38 @@ +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: | + echo "FIXME: Enable K/N builds - then capture KN artifact metrics" + ./gradlew -Paws.kotlin.native=false build --parallel + ./gradlew -Paws.kotlin.native=false 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@main + with: + upload: 'true' + release_metrics: 'true' + +permissions: + id-token: write + contents: read diff --git a/build.gradle.kts b/build.gradle.kts index a945f4a6..0121829c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,13 +24,6 @@ plugins { alias(libs.plugins.kotlinx.binary.compatibility.validator) alias(libs.plugins.kotlin.multiplatform) apply false alias(libs.plugins.aws.kotlin.repo.tools.kmp) - alias(libs.plugins.aws.kotlin.repo.tools.artifactsizemetrics) -} - -artifactSizeMetrics { - artifactPrefixes = setOf(":aws-crt-kotlin") - significantChangeThresholdPercentage = 5.0 - projectRepositoryName = "aws-crt-kotlin" } allprojects { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 81f0362a..07ac8200 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,4 +34,3 @@ mockserver-netty = { module = "org.mock-server:mockserver-netty", version.ref = kotlin-multiplatform = {id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin-version" } kotlinx-binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator-version" } aws-kotlin-repo-tools-kmp = { id = "aws.sdk.kotlin.gradle.kmp", 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" }