Skip to content

Commit

Permalink
Testing workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
0marperez committed Apr 22, 2024
1 parent 59c63da commit 9cfb9be
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 3 deletions.
110 changes: 110 additions & 0 deletions .github/workflows/artifact-size-metrics.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Artifact Size Metrics
on:
pull_request:
types: [ opened, synchronize, reopened, labeled, unlabeled ]
branches: [ 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: Generate Artifact Size Metrics
run: ./gradlew artifactSizeMetrics
- name: Save Artifact Size Metrics
run: |
cd build/reports/metrics/
REPOSITORY=$(echo ${{ github.repository }} | cut -d '/' -f 2)
aws s3 cp artifact-size-metrics.csv s3://${{ secrets.ARTIFACT_METRICS_BUCKET }}/$REPOSITORY-${{ github.event.release.tag_name }}-release.csv
aws s3 cp artifact-size-metrics.csv s3://${{ secrets.ARTIFACT_METRICS_BUCKET }}/$REPOSITORY-latest-release.csv
- 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: Generate Artifact Size Metrics
run: ./gradlew artifactSizeMetrics
- name: Analyze Artifact Size Metrics
run: ./gradlew analyzeArtifactSizeMetrics
- name: Show Results
uses: actions/github-script@v7
with:
script: |
const getComments =
`query {
repository(owner:"${context.repo.owner}", name:"${context.repo.repo}"){
pullRequest(number: ${context.issue.number}) {
id
comments(last:100) {
nodes {
id
body
author {
login
}
isMinimized
}
}
}
}
}`
const response = await github.graphql(getComments)
const comments = response.repository.pullRequest.comments.nodes
for (const i in comments) {
if (comments[i].author.login == 'github-actions' && !comments[i].isMinimized && comments[i].body.startsWith('Affected Artifacts')) {
const hideComment =
`mutation {
minimizeComment(input:{subjectId:"${comments[i].id}", classifier:OUTDATED}){
clientMutationId
}
}`
await github.graphql(hideComment)
}
}
const fs = require('node:fs')
const comment = fs.readFileSync('build/reports/metrics/artifact-analysis.md', 'utf8')
const writeComment =
`mutation {
addComment(input:{body:"""${comment}""", subjectId:"${response.repository.pullRequest.id}"}){
clientMutationId
}
}`
await github.graphql(writeComment)
- name: Evaluate
if: ${{ !contains(github.event.pull_request.labels.*.name, 'acknowledge-artifact-size-increase') }}
run: |
cd build/reports/metrics/artifact-analysis.md
cat has-significant-change.txt | grep true
if [ $? = 0 ]; then
echo An artifact increased in size by more than allowed or a new artifact was created.
exit 1
fi
7 changes: 7 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ plugins {
// since build-plugins also has <some> version in its dependency closure
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.kotlin.jvm) apply false
id("artifact-size-metrics") version "0.4.2" // TODO: Use lib.versions.toml
}

artifactSizeMetrics {
artifactPrefixes = setOf(":codegen", ":runtime")
significantChangeThresholdPercentage = 5.0
projectRepositoryName = "smithy-kotlin"
}

val testJavaVersion = typedProp<String>("test.java.version")?.let {
Expand Down
6 changes: 3 additions & 3 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ pluginManagement {
maven {
name = "kotlinRepoTools"
url = java.net.URI("https://d2gys1nrxnjnyg.cloudfront.net/releases")
content {
includeGroupByRegex("""aws\.sdk\.kotlin.*""")
}
// content {
// includeGroupByRegex("""aws\.sdk\.kotlin.*""")
// }
}
}
}
Expand Down

0 comments on commit 9cfb9be

Please sign in to comment.