diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 5eb8aaf02..7e3303699 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -17,7 +17,7 @@ on: [pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm continue-on-error: true strategy: max-parallel: 4 diff --git a/.github/workflows/trace_forwarder.yml b/.github/workflows/trace_forwarder.yml index f19d608b2..fd2b856d8 100644 --- a/.github/workflows/trace_forwarder.yml +++ b/.github/workflows/trace_forwarder.yml @@ -4,7 +4,7 @@ on: [pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout source uses: actions/checkout@v3 diff --git a/aws/logs_monitoring/template.yaml b/aws/logs_monitoring/template.yaml index 7a9f2e88d..1b4963b38 100644 --- a/aws/logs_monitoring/template.yaml +++ b/aws/logs_monitoring/template.yaml @@ -409,6 +409,8 @@ Resources: - ZipFile: " " MemorySize: !Ref MemorySize Runtime: python3.12 + Architectures: + - arm64 Timeout: !Ref Timeout Tags: - Key: "dd_forwarder_version" diff --git a/aws/logs_monitoring/tools/Dockerfile_bundle b/aws/logs_monitoring/tools/Dockerfile_bundle index aa80f245e..2fe0b2879 100644 --- a/aws/logs_monitoring/tools/Dockerfile_bundle +++ b/aws/logs_monitoring/tools/Dockerfile_bundle @@ -7,7 +7,7 @@ WORKDIR /build COPY . . -RUN pip install -r requirements.txt -t . +RUN pip install --no-cache-dir -r requirements.txt -t . -U # Remove *.pyc files RUN find . -name \*.pyc -delete diff --git a/aws/logs_monitoring/tools/build_bundle.sh b/aws/logs_monitoring/tools/build_bundle.sh index 0ed2f5b32..b379dbfe4 100755 --- a/aws/logs_monitoring/tools/build_bundle.sh +++ b/aws/logs_monitoring/tools/build_bundle.sh @@ -64,11 +64,11 @@ docker_build_zip() { # between different python runtimes. temp_dir=$(mktemp -d) - docker buildx build --platform linux/amd64 --file "${DIR}/Dockerfile_bundle" -t "datadog-bundle:$1" .. --no-cache --build-arg "runtime=${PYTHON_VERSION}" + docker buildx build --platform linux/arm64 --file "${DIR}/Dockerfile_bundle" -t "datadog-bundle:$1" .. --no-cache --build-arg "runtime=${PYTHON_VERSION}" # Run the image by runtime tag, tar its generated `python` directory to sdout, # then extract it to a temp directory. - docker run --platform linux/amd64 "datadog-bundle:${1}" tar cf - . | tar -xf - -C "${temp_dir}" + docker run --platform linux/arm64 "datadog-bundle:${1}" tar cf - . | tar -xf - -C "${temp_dir}" # Zip to destination, and keep directory structure as based in $temp_dir (cd "${temp_dir}" && zip -q -r "${zip_destination}" ./) @@ -82,7 +82,7 @@ docker_build_zip() { # Run the image by runtime tag, tar its generated `python` directory to sdout, # then extract it to a temp directory. - docker run --platform linux/amd64 datadog-bundle:$1 tar cf - . | tar -xf - -C $temp_dir/$SUB_DIRECTORY + docker run --platform linux/arm64 datadog-bundle:$1 tar cf - . | tar -xf - -C $temp_dir/$SUB_DIRECTORY # Zip to destination, and keep directory structure as based in $temp_dir (cd "${temp_dir}" && zip -q -r "${layer_destination}" ./) diff --git a/aws/logs_monitoring/tools/integration_tests/integration_tests.sh b/aws/logs_monitoring/tools/integration_tests/integration_tests.sh index 3afd99ac2..f3932c2a8 100755 --- a/aws/logs_monitoring/tools/integration_tests/integration_tests.sh +++ b/aws/logs_monitoring/tools/integration_tests/integration_tests.sh @@ -152,9 +152,9 @@ cd $INTEGRATION_TESTS_DIR # Build Docker image of Forwarder for tests echo "Building Docker Image for Forwarder with tag datadog-log-forwarder:$PYTHON_VERSION" -docker buildx build --platform linux/amd64 --file "${INTEGRATION_TESTS_DIR}/forwarder/Dockerfile" -t "datadog-log-forwarder:$PYTHON_VERSION" ../../.forwarder --no-cache \ +docker buildx build --platform linux/arm64 --file "${INTEGRATION_TESTS_DIR}/forwarder/Dockerfile" -t "datadog-log-forwarder:$PYTHON_VERSION" ../../.forwarder --no-cache \ --build-arg forwarder='aws-dd-forwarder-0.0.0' \ - --build-arg image="public.ecr.aws/lambda/python:${PYTHON_VERSION_TAG}-x86_64" + --build-arg image="public.ecr.aws/lambda/python:${PYTHON_VERSION_TAG}-arm64" echo "Running integration tests for ${PYTHON_VERSION}" LOG_LEVEL=${LOG_LEVEL} \ diff --git a/aws/logs_monitoring/trace_forwarder/Dockerfile b/aws/logs_monitoring/trace_forwarder/Dockerfile index 0825b53cd..b1af25835 100644 --- a/aws/logs_monitoring/trace_forwarder/Dockerfile +++ b/aws/logs_monitoring/trace_forwarder/Dockerfile @@ -7,7 +7,7 @@ RUN go get -u github.com/golang/dep/cmd/dep COPY . /go/src/github.com/DataDog/datadog-serverless-functions/aws/logs_monitoring/trace_forwarder/ WORKDIR /go/src/github.com/DataDog/datadog-serverless-functions/aws/logs_monitoring/trace_forwarder/ ENV GOOS=linux -ENV GOARCH=amd64 +ENV GOARCH=arm64 RUN dep ensure # Build the go binary diff --git a/aws/logs_monitoring/trace_forwarder/scripts/build_linux_go_bin.sh b/aws/logs_monitoring/trace_forwarder/scripts/build_linux_go_bin.sh index 969a08ddc..5998bf949 100755 --- a/aws/logs_monitoring/trace_forwarder/scripts/build_linux_go_bin.sh +++ b/aws/logs_monitoring/trace_forwarder/scripts/build_linux_go_bin.sh @@ -16,11 +16,11 @@ rm -rf ./bin # Install datadogpy in a docker container to avoid the mess from switching # between different python runtimes. -if [[ $(docker image ls | grep -c datadog-go-layer) -lt 1 ]]; then - docker buildx build --platform linux/amd64 -t datadog-go-layer . --no-cache --build-arg "runtime=python:3.12" +if [[ $(docker image ls | grep -c golang) -lt 1 ]]; then + docker buildx build --platform linux/arm64 -t golang . --no-cache --build-arg "runtime=python:3.12" fi -id=$(docker create --platform linux/amd64 datadog-go-layer) +id=$(docker create --platform linux/arm64 golang) docker cp "${id}:/go/src/github.com/DataDog/datadog-serverless-functions/aws/logs_monitoring/trace_forwarder/bin" . docker rm -v "${id}" echo "Done creating archive bin" diff --git a/aws/logs_monitoring/trace_forwarder/scripts/run_tests.sh b/aws/logs_monitoring/trace_forwarder/scripts/run_tests.sh index 4ba88503f..23ec52b22 100755 --- a/aws/logs_monitoring/trace_forwarder/scripts/run_tests.sh +++ b/aws/logs_monitoring/trace_forwarder/scripts/run_tests.sh @@ -11,5 +11,5 @@ set -e # Change to the parent of the directory this script is in cd $(dirname "$0")/.. -docker buildx build --platform linux/amd64 -t datadog-go-layer . --build-arg runtime=python:3.12 +docker buildx build --platform linux/arm64 -t datadog-go-layer . --build-arg runtime=python:3.12 docker run --rm datadog-go-layer go test -v ./...