From 2bbf6768670d4d3cd397f9d74aced8382543c764 Mon Sep 17 00:00:00 2001 From: Raphael Silva Date: Tue, 18 Oct 2022 08:13:42 -0700 Subject: [PATCH 1/5] Update jackson to latest stable version --- dependencyManagement/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index fd65c9dda3..8738c326a1 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -34,7 +34,7 @@ val otelSnapshotVersion = "1.20.0" val DEPENDENCY_BOMS = listOf( "com.amazonaws:aws-java-sdk-bom:1.12.322", - "com.fasterxml.jackson:jackson-bom:2.14.0-rc2", + "com.fasterxml.jackson:jackson-bom:2.13.4.20221013", "com.google.guava:guava-bom:31.1-jre", "com.google.protobuf:protobuf-bom:3.21.7", "com.linecorp.armeria:armeria-bom:1.20.1", @@ -60,7 +60,7 @@ val DEPENDENCY_SETS = listOf( ), DependencySet( "org.slf4j", - "2.0.3", + "1.7.36", listOf( "slf4j-api", "slf4j-simple" From f81755201a71031f159f7377f9cc014795cfe2ff Mon Sep 17 00:00:00 2001 From: Raphael Silva Date: Wed, 19 Oct 2022 15:40:29 -0700 Subject: [PATCH 2/5] Fix approval steps --- .github/workflows/pr-build.yml | 2 +- .../software/amazon/adot/GradleUtils.kt | 37 +++++++++++++++++++ gradle.properties | 3 ++ otelagent/build.gradle.kts | 25 ++++--------- sample-apps/spark-awssdkv1/build.gradle.kts | 24 ++++-------- sample-apps/spark/build.gradle.kts | 28 ++++++-------- sample-apps/springboot/build.gradle.kts | 24 ++++-------- smoke-tests/runner/build.gradle.kts | 7 ++++ .../runner/SpringBootSmokeTest.java | 8 ++-- smoke-tests/spring-boot/build.gradle.kts | 32 +++++++++++++--- 10 files changed, 115 insertions(+), 75 deletions(-) create mode 100644 buildSrc/src/main/kotlin/software/amazon/adot/GradleUtils.kt diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 7eea8c14a7..efdf6cd573 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -23,5 +23,5 @@ jobs: - name: Build with Gradle uses: gradle/gradle-build-action@v2 with: - arguments: build --stacktrace -PenableCoverage=true + arguments: build --stacktrace -PenableCoverage=true -PlocalDocker=true - uses: codecov/codecov-action@v1 diff --git a/buildSrc/src/main/kotlin/software/amazon/adot/GradleUtils.kt b/buildSrc/src/main/kotlin/software/amazon/adot/GradleUtils.kt new file mode 100644 index 0000000000..50a40c8b0e --- /dev/null +++ b/buildSrc/src/main/kotlin/software/amazon/adot/GradleUtils.kt @@ -0,0 +1,37 @@ +package software.amazon.adot + +import com.google.cloud.tools.jib.gradle.JibExtension + +/** + * Utilitary extension function used to configure jib according to flags. Used to avoid having branching in each build + * script. + */ +fun JibExtension.configureImages(sourceImage:String, destinationImage: String, localDocker: Boolean, multiPlatform: Boolean, tags: Set = setOf()) { + to { + image = destinationImage + if (!tags.isEmpty()) { + this.tags = tags; + } + } + + from { + if (localDocker) { + image = "docker://$sourceImage" + } else { + image = sourceImage + } + + if (multiPlatform) { + platforms { + platform { + architecture = "amd64" + os = "linux" + } + platform { + architecture = "arm64" + os = "linux" + } + } + } + } +} diff --git a/gradle.properties b/gradle.properties index 987a7309ec..e51b2071a2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,3 +15,6 @@ org.gradle.jvmargs= \ --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \ --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \ --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED + +# Flag used in the jib plugin to inform if we should use multi platform and pull from local docker. +localDocker=false diff --git a/otelagent/build.gradle.kts b/otelagent/build.gradle.kts index 102d0971a2..1c0a70abf4 100644 --- a/otelagent/build.gradle.kts +++ b/otelagent/build.gradle.kts @@ -14,7 +14,7 @@ */ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - +import software.amazon.adot.configureImages plugins { java `maven-publish` @@ -131,22 +131,13 @@ tasks { } jib { - to { - image = "public.ecr.aws/u0d6r4y4/aws-opentelemetry-java-base:alpha" - } - from { - image = "gcr.io/distroless/java17-debian11:debug" - platforms { - platform { - architecture = "amd64" - os = "linux" - } - platform { - architecture = "arm64" - os = "linux" - } - } - } + configureImages( + "gcr.io/distroless/java17-debian11:debug", + "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha", + localDocker = false, + multiPlatform = !rootProject.property("localDocker")!!.equals("true") + ) + container { appRoot = "/aws-observability" setEntrypoint("INHERIT") diff --git a/sample-apps/spark-awssdkv1/build.gradle.kts b/sample-apps/spark-awssdkv1/build.gradle.kts index 0c1a35c6bd..af37ef6888 100644 --- a/sample-apps/spark-awssdkv1/build.gradle.kts +++ b/sample-apps/spark-awssdkv1/build.gradle.kts @@ -1,3 +1,5 @@ +import software.amazon.adot.configureImages + plugins { java @@ -19,23 +21,13 @@ application { } jib { - to { - image = "public.ecr.aws/aws-otel-test/aws-otel-java-spark-awssdkv1" + configureImages( + "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha", + "public.ecr.aws/aws-otel-test/aws-otel-java-spark-awssdkv1", + localDocker = rootProject.property("localDocker")!!.equals("true"), + multiPlatform = !rootProject.property("localDocker")!!.equals("true"), tags = setOf("latest", "${System.getenv("COMMIT_HASH")}") - } - from { - image = "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha" - platforms { - platform { - architecture = "amd64" - os = "linux" - } - platform { - architecture = "arm64" - os = "linux" - } - } - } + ) } tasks { diff --git a/sample-apps/spark/build.gradle.kts b/sample-apps/spark/build.gradle.kts index 948f708264..2df6472d65 100644 --- a/sample-apps/spark/build.gradle.kts +++ b/sample-apps/spark/build.gradle.kts @@ -1,3 +1,5 @@ +import software.amazon.adot.configureImages + plugins { java @@ -22,23 +24,13 @@ application { } jib { - to { - image = "public.ecr.aws/aws-otel-test/aws-otel-java-spark" + configureImages( + "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha", + "public.ecr.aws/aws-otel-test/aws-otel-java-spark", + localDocker = rootProject.property("localDocker")!!.equals("true"), + multiPlatform = !rootProject.property("localDocker")!!.equals("true"), tags = setOf("latest", "${System.getenv("COMMIT_HASH")}") - } - from { - image = "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha" - platforms { - platform { - architecture = "amd64" - os = "linux" - } - platform { - architecture = "arm64" - os = "linux" - } - } - } + ) } tasks { @@ -46,3 +38,7 @@ tasks { dependsOn(":otelagent:jib") } } + +tasks.named("jibDockerBuild") { + dependsOn(":otelagent:jibDockerBuild") +} diff --git a/sample-apps/springboot/build.gradle.kts b/sample-apps/springboot/build.gradle.kts index b6e667b858..9e270b21b9 100644 --- a/sample-apps/springboot/build.gradle.kts +++ b/sample-apps/springboot/build.gradle.kts @@ -1,3 +1,5 @@ +import software.amazon.adot.configureImages + plugins { java id("org.springframework.boot") @@ -14,23 +16,13 @@ dependencies { } jib { - to { - image = "public.ecr.aws/aws-otel-test/aws-otel-java-springboot" + configureImages( + "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha", + "public.ecr.aws/aws-otel-test/aws-otel-java-springboot", + rootProject.property("localDocker")!!.equals("true"), + !rootProject.property("localDocker")!!.equals("true"), tags = setOf("latest", "${System.getenv("COMMIT_HASH")}") - } - from { - image = "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha" - platforms { - platform { - architecture = "amd64" - os = "linux" - } - platform { - architecture = "arm64" - os = "linux" - } - } - } + ) } tasks { diff --git a/smoke-tests/runner/build.gradle.kts b/smoke-tests/runner/build.gradle.kts index 68b52be9d1..8376d6a08e 100644 --- a/smoke-tests/runner/build.gradle.kts +++ b/smoke-tests/runner/build.gradle.kts @@ -44,4 +44,11 @@ tasks { .getAsFile().absolutePath}" ) } + named("test") { + // Make sure that images used during tests are available locally. + dependsOn(":sample-apps:spark:jibDockerBuild") + dependsOn(":sample-apps:springboot:jibDockerBuild") + dependsOn(":smoke-tests:spring-boot:jibDockerBuild") + dependsOn(":smoke-tests:fakebackend:jibDockerBuild") + } } diff --git a/smoke-tests/runner/src/test/java/io/awsobservability/instrumentation/smoketests/runner/SpringBootSmokeTest.java b/smoke-tests/runner/src/test/java/io/awsobservability/instrumentation/smoketests/runner/SpringBootSmokeTest.java index 43ad25713b..53b324cf3c 100644 --- a/smoke-tests/runner/src/test/java/io/awsobservability/instrumentation/smoketests/runner/SpringBootSmokeTest.java +++ b/smoke-tests/runner/src/test/java/io/awsobservability/instrumentation/smoketests/runner/SpringBootSmokeTest.java @@ -98,7 +98,7 @@ public ExportTraceServiceRequest deserialize( @Container private static final GenericContainer backend = - new GenericContainer<>("public.ecr.aws/u0d6r4y4/aws-otel-java-test-fakebackend:alpha") + new GenericContainer<>("public.ecr.aws/aws-otel-test/aws-otel-java-test-fakebackend:alpha") .withExposedPorts(8080) .waitingFor(Wait.forHttp("/health").forPort(8080)) .withLogConsumer(new Slf4jLogConsumer(backendLogger)) @@ -107,7 +107,8 @@ public ExportTraceServiceRequest deserialize( @Container private static final GenericContainer application = - new GenericContainer<>("public.ecr.aws/u0d6r4y4/aws-otel-java-smoketests-springboot:latest") + new GenericContainer<>( + "public.ecr.aws/aws-otel-test/aws-otel-java-smoketests-springboot:latest") .dependsOn(backend) .withExposedPorts(8080) .withNetwork(network) @@ -122,7 +123,8 @@ public ExportTraceServiceRequest deserialize( @Container private static final GenericContainer applicationXraySampler = - new GenericContainer<>("public.ecr.aws/u0d6r4y4/aws-otel-java-smoketests-springboot:latest") + new GenericContainer<>( + "public.ecr.aws/aws-otel-test/aws-otel-java-smoketests-springboot:latest") .dependsOn(backend) .withExposedPorts(8080) .withNetwork(network) diff --git a/smoke-tests/spring-boot/build.gradle.kts b/smoke-tests/spring-boot/build.gradle.kts index faf449dab0..d8e1d2657c 100644 --- a/smoke-tests/spring-boot/build.gradle.kts +++ b/smoke-tests/spring-boot/build.gradle.kts @@ -1,3 +1,20 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +import software.amazon.adot.configureImages + /* * Copyright Amazon.com, Inc. or its affiliates. * @@ -29,16 +46,19 @@ dependencies { } jib { - to { - image = "public.ecr.aws/u0d6r4y4/aws-otel-java-smoketests-springboot" - } - from { - image = "public.ecr.aws/u0d6r4y4/aws-opentelemetry-java-base:alpha" - } + configureImages( + "public.ecr.aws/aws-otel-test/aws-opentelemetry-java-base:alpha", + "public.ecr.aws/aws-otel-test/aws-otel-java-smoketests-springboot", + localDocker = rootProject.property("localDocker")!!.equals("true"), + multiPlatform = false + ) } tasks { named("jib") { dependsOn(":otelagent:jib") } + named("jibDockerBuild") { + dependsOn(":otelagent:jibDockerBuild") + } } From e03aab1836e6f84291b2dde10e198abd4c523ced Mon Sep 17 00:00:00 2001 From: Raphael Silva Date: Wed, 19 Oct 2022 15:43:05 -0700 Subject: [PATCH 3/5] Add missing build script --- buildSrc/build.gradle.kts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 buildSrc/build.gradle.kts diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000000..718d0b3e26 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + `kotlin-dsl` +} +repositories { + mavenCentral() + gradlePluginPortal() + mavenLocal() +} + +dependencies { + implementation("com.google.cloud.tools:jib-gradle-plugin:3.3.0") +} From 5668985226bca02af63bcc86e9b5eb2a4de7d2f9 Mon Sep 17 00:00:00 2001 From: Raphael Silva Date: Wed, 19 Oct 2022 15:48:38 -0700 Subject: [PATCH 4/5] Add missing inter project dependencies --- sample-apps/spark-awssdkv1/build.gradle.kts | 3 +++ sample-apps/spark/build.gradle.kts | 7 +++---- sample-apps/springboot/build.gradle.kts | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sample-apps/spark-awssdkv1/build.gradle.kts b/sample-apps/spark-awssdkv1/build.gradle.kts index af37ef6888..0d45717538 100644 --- a/sample-apps/spark-awssdkv1/build.gradle.kts +++ b/sample-apps/spark-awssdkv1/build.gradle.kts @@ -34,4 +34,7 @@ tasks { named("jib") { dependsOn(":otelagent:jib") } + named("jibDockerBuild") { + dependsOn(":otelagent:jibDockerBuild") + } } diff --git a/sample-apps/spark/build.gradle.kts b/sample-apps/spark/build.gradle.kts index 2df6472d65..25280889ed 100644 --- a/sample-apps/spark/build.gradle.kts +++ b/sample-apps/spark/build.gradle.kts @@ -37,8 +37,7 @@ tasks { named("jib") { dependsOn(":otelagent:jib") } -} - -tasks.named("jibDockerBuild") { - dependsOn(":otelagent:jibDockerBuild") + named("jibDockerBuild") { + dependsOn(":otelagent:jibDockerBuild") + } } diff --git a/sample-apps/springboot/build.gradle.kts b/sample-apps/springboot/build.gradle.kts index 9e270b21b9..6d0ef93eca 100644 --- a/sample-apps/springboot/build.gradle.kts +++ b/sample-apps/springboot/build.gradle.kts @@ -29,4 +29,8 @@ tasks { named("jib") { dependsOn(":otelagent:jib") } + + named("jibDockerBuild") { + dependsOn(":otelagent:jibDockerBuild") + } } From 7d532d20eed22a6fdbefe617d675634db9a18005 Mon Sep 17 00:00:00 2001 From: Raphael Silva Date: Wed, 19 Oct 2022 16:54:08 -0700 Subject: [PATCH 5/5] Fix approval to only run integrationt tests in ubuntu --- .github/workflows/pr-build.yml | 8 +++++++- smoke-tests/runner/build.gradle.kts | 12 +++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index efdf6cd573..34d6153760 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -20,8 +20,14 @@ jobs: with: java-version: 17 - uses: gradle/wrapper-validation-action@v1 + - name: Build with Gradle with Integration tests + if: ${{ matrix.os == 'ubuntu-latest' }} + uses: gradle/gradle-build-action@v2 + with: + arguments: build integrationTests --stacktrace -PenableCoverage=true -PlocalDocker=true - name: Build with Gradle uses: gradle/gradle-build-action@v2 + if: ${{ matrix.os != 'ubuntu-latest' }} with: - arguments: build --stacktrace -PenableCoverage=true -PlocalDocker=true + arguments: build --stacktrace -PenableCoverage=true - uses: codecov/codecov-action@v1 diff --git a/smoke-tests/runner/build.gradle.kts b/smoke-tests/runner/build.gradle.kts index 8376d6a08e..8a02e8de90 100644 --- a/smoke-tests/runner/build.gradle.kts +++ b/smoke-tests/runner/build.gradle.kts @@ -44,7 +44,17 @@ tasks { .getAsFile().absolutePath}" ) } - named("test") { + + register("jibDockerBuildAll") + register("integrationTests") + + named("integrationTests") { + dependsOn("test") + dependsOn("jibDockerBuildAll") + findByName("test")?.mustRunAfter("jibDockerBuildAll") + } + + named("jibDockerBuildAll") { // Make sure that images used during tests are available locally. dependsOn(":sample-apps:spark:jibDockerBuild") dependsOn(":sample-apps:springboot:jibDockerBuild")