From bd6838df1871a6df5fd8ad7791c442696de8e07e Mon Sep 17 00:00:00 2001 From: Prashant Srivastava Date: Tue, 7 Jan 2025 13:18:59 -0800 Subject: [PATCH 1/6] polishing the layer script --- lambda-layer/.gitignore | 2 +- lambda-layer/build-layer.sh | 10 +++++++--- lambda-layer/otel-instrument | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lambda-layer/.gitignore b/lambda-layer/.gitignore index d79194e8da..719d3e0657 100644 --- a/lambda-layer/.gitignore +++ b/lambda-layer/.gitignore @@ -5,7 +5,7 @@ build # Ignore Terraform state files -.terraform +.terraform/ *.tfstate *.tfstate.backup *.lock.hcl \ No newline at end of file diff --git a/lambda-layer/build-layer.sh b/lambda-layer/build-layer.sh index c1750e4588..bb4e02e2fd 100755 --- a/lambda-layer/build-layer.sh +++ b/lambda-layer/build-layer.sh @@ -46,8 +46,12 @@ popd echo "Info: Building ADOT Lambda Java SDK Layer Code" ./gradlew build -PotelVersion=${version} - ## Copy ADOT Java Agent downloaded using Gradle task and bundle it with the Lambda handler script echo "Info: Creating the layer artifact" -cp "$SOURCEDIR"/build/javaagent/aws-opentelemetry-agent*.jar ./opentelemetry-javaagent.jar -zip -qr opentelemetry-javaagent-layer.zip opentelemetry-javaagent.jar otel-instrument +mkdir -p "$SOURCEDIR"/build/distributions/ +cp "$SOURCEDIR"/build/javaagent/aws-opentelemetry-agent*.jar "$SOURCEDIR"/build/distributions/aws-opentelemetry-javaagent.jar +zip -r ./build/distributions/aws-opentelemetry-java-layer.zip "$SOURCEDIR"/build/distributions/aws-opentelemetry-javaagent.jar otel-instrument + +## Cleanup +# revert the patch applied since it is only needed while building the layer. +git restore ../dependencyManagement/build.gradle.kts diff --git a/lambda-layer/otel-instrument b/lambda-layer/otel-instrument index e28a2ea884..915d41d9d0 100644 --- a/lambda-layer/otel-instrument +++ b/lambda-layer/otel-instrument @@ -6,7 +6,7 @@ export OTEL_PROPAGATORS="${OTEL_PROPAGATORS:-xray,tracecontext,b3,b3multi}" export OTEL_SERVICE_NAME=${OTEL_SERVICE_NAME:-${AWS_LAMBDA_FUNCTION_NAME}} -export JAVA_TOOL_OPTIONS="-javaagent:/opt/opentelemetry-javaagent.jar ${JAVA_TOOL_OPTIONS}" +export JAVA_TOOL_OPTIONS="-javaagent:/opt/aws-opentelemetry-javaagent.jar ${JAVA_TOOL_OPTIONS}" if [[ $OTEL_RESOURCE_ATTRIBUTES != *"service.name="* ]]; then export OTEL_RESOURCE_ATTRIBUTES="service.name=${AWS_LAMBDA_FUNCTION_NAME},${OTEL_RESOURCE_ATTRIBUTES}" From 4fda1fb46310be29c59ce4309eb658c7fca1cfed Mon Sep 17 00:00:00 2001 From: Prashant Srivastava Date: Tue, 7 Jan 2025 14:16:31 -0800 Subject: [PATCH 2/6] pr build + fail layer script fast --- .github/workflows/pr-build.yml | 15 +++++++++++++++ lambda-layer/build-layer.sh | 1 + 2 files changed, 16 insertions(+) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 507362ddeb..31c9cba7f7 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -156,3 +156,18 @@ jobs: arguments: build --stacktrace -PenableCoverage=true - uses: codecov/codecov-action@v3 + build-lambda: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo @ SHA - ${{ github.sha }} + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: temurin + + - name: Build layer + working-directory: lambda-layer + run: ./build-layer.sh diff --git a/lambda-layer/build-layer.sh b/lambda-layer/build-layer.sh index bb4e02e2fd..4dae37b556 100755 --- a/lambda-layer/build-layer.sh +++ b/lambda-layer/build-layer.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e SOURCEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" From 330f4e62b14285354bb8ca909bab9d2b8c080692 Mon Sep 17 00:00:00 2001 From: Prashant Srivastava Date: Tue, 7 Jan 2025 14:16:31 -0800 Subject: [PATCH 3/6] pr build + fail layer script fast --- .github/workflows/pr-build.yml | 15 +++++++++++++++ lambda-layer/build-layer.sh | 3 +-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 507362ddeb..31c9cba7f7 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -156,3 +156,18 @@ jobs: arguments: build --stacktrace -PenableCoverage=true - uses: codecov/codecov-action@v3 + build-lambda: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo @ SHA - ${{ github.sha }} + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: temurin + + - name: Build layer + working-directory: lambda-layer + run: ./build-layer.sh diff --git a/lambda-layer/build-layer.sh b/lambda-layer/build-layer.sh index bb4e02e2fd..fcdb75b3be 100755 --- a/lambda-layer/build-layer.sh +++ b/lambda-layer/build-layer.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e SOURCEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" @@ -27,8 +28,6 @@ patch -p1 < "$SOURCEDIR"/../.github/patches/opentelemetry-java-instrumentation.p # This patch is for Lambda related context propagation patch -p1 < "$SOURCEDIR"/patches/opentelemetry-java-instrumentation.patch -git add -A -git commit -m "Create patch version" ./gradlew publishToMavenLocal popd rm -rf opentelemetry-java-instrumentation From 893d4fdfaf016f80eb293125526652cd3d5d1bb0 Mon Sep 17 00:00:00 2001 From: Prashant Srivastava Date: Wed, 8 Jan 2025 09:39:21 -0800 Subject: [PATCH 4/6] main build - build and upload layer artifact --- .github/workflows/main-build.yml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-build.yml b/.github/workflows/main-build.yml index 07f8b29fa2..538273c983 100644 --- a/.github/workflows/main-build.yml +++ b/.github/workflows/main-build.yml @@ -226,8 +226,33 @@ jobs: with: arguments: contractTests -PlocalDocker=true + application-signals-lambda-layer-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + - name: Build Application Signals Lambda Layer + working-directory: lambda-layer + run: | + ./build-layer.sh + - name: Upload layer zip to S3 + working-directory: lambda-layer + run: | + aws s3 cp ./build/distributions/aws-opentelemetry-java-layer.zip s3://adot-main-build-staging-jar/adot-java-lambda-layer-${{ github.run_id }}.zip + - name: Upload layer zip to GitHub Actions + uses: actions/upload-artifact@v3 + with: + name: aws-opentelemetry-java-layer.zip + path: lambda-layer/build/distributions/aws-opentelemetry-java-layer.zip + + application-signals-e2e-test: - needs: [build] + needs: [build, application-signals-lambda-layer-build] uses: ./.github/workflows/application-signals-e2e-test.yml secrets: inherit with: From 53c55acc5d70577ac68929c5ffaac564dbda0b86 Mon Sep 17 00:00:00 2001 From: Prashant Srivastava Date: Wed, 8 Jan 2025 09:48:31 -0800 Subject: [PATCH 5/6] dummy commit to trigger main build --- .github/workflows/main-build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main-build.yml b/.github/workflows/main-build.yml index 538273c983..0d35041cdb 100644 --- a/.github/workflows/main-build.yml +++ b/.github/workflows/main-build.yml @@ -240,15 +240,15 @@ jobs: working-directory: lambda-layer run: | ./build-layer.sh - - name: Upload layer zip to S3 - working-directory: lambda-layer - run: | - aws s3 cp ./build/distributions/aws-opentelemetry-java-layer.zip s3://adot-main-build-staging-jar/adot-java-lambda-layer-${{ github.run_id }}.zip - name: Upload layer zip to GitHub Actions uses: actions/upload-artifact@v3 with: name: aws-opentelemetry-java-layer.zip path: lambda-layer/build/distributions/aws-opentelemetry-java-layer.zip + - name: Upload layer zip to S3 + working-directory: lambda-layer + run: | + aws s3 cp ./build/distributions/aws-opentelemetry-java-layer.zip s3://adot-main-build-staging-jar/adot-java-lambda-layer-${{ github.run_id }}.zip application-signals-e2e-test: @@ -272,3 +272,4 @@ jobs: region: us-east-1 secrets: roleArn: ${{ secrets.METRICS_ROLE_ARN }} + From 33bd7c4c7b917d02c880a4f1341d53b98ccd911d Mon Sep 17 00:00:00 2001 From: Prashant Srivastava Date: Wed, 8 Jan 2025 13:37:21 -0800 Subject: [PATCH 6/6] add aws credentials for uploading to s3 --- .github/workflows/main-build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/main-build.yml b/.github/workflows/main-build.yml index 0d35041cdb..92101186f7 100644 --- a/.github/workflows/main-build.yml +++ b/.github/workflows/main-build.yml @@ -245,6 +245,11 @@ jobs: with: name: aws-opentelemetry-java-layer.zip path: lambda-layer/build/distributions/aws-opentelemetry-java-layer.zip + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ACCOUNT_ID }}:role/${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ROLE_NAME }} + aws-region: us-east-1 - name: Upload layer zip to S3 working-directory: lambda-layer run: |