Skip to content

Commit 6c80fd2

Browse files
authored
Merge branch 'main' into rudraroop/jackson-bump
2 parents 9bd304e + 72f4d62 commit 6c80fd2

75 files changed

Lines changed: 310 additions & 34563 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/runtime-interface-client_pr.yml

Lines changed: 106 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,17 @@ permissions:
1919

2020
jobs:
2121

22-
smoke-test:
23-
runs-on: ubuntu-latest
22+
smoke-test-arch:
23+
strategy:
24+
fail-fast: true
25+
matrix:
26+
include:
27+
- arch: x86_64
28+
runner: ubuntu-latest
29+
- arch: aarch64
30+
runner: ubuntu-24.04-arm
31+
runs-on: ${{ matrix.runner }}
32+
name: "smoke-test (${{ matrix.arch }})"
2433
steps:
2534
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
2635

@@ -39,14 +48,23 @@ jobs:
3948
working-directory: ./aws-lambda-java-serialization
4049
run: mvn clean install
4150

42-
- name: Runtime Interface Client smoke tests - Run 'pr' target
51+
- name: Runtime Interface Client smoke tests - Run 'pr-${{ matrix.arch }}' target
4352
working-directory: ./aws-lambda-java-runtime-interface-client
44-
run: make pr
53+
run: make pr-${{ matrix.arch }}
4554
env:
4655
IS_JAVA_8: true
4756

48-
build:
49-
runs-on: ubuntu-latest
57+
build-arch:
58+
strategy:
59+
fail-fast: true
60+
matrix:
61+
include:
62+
- arch: x86_64
63+
runner: ubuntu-latest
64+
- arch: aarch64
65+
runner: ubuntu-24.04-arm
66+
runs-on: ${{ matrix.runner }}
67+
name: "build (${{ matrix.arch }})"
5068
steps:
5169
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
5270

@@ -57,17 +75,11 @@ jobs:
5775
distribution: corretto
5876
cache: maven
5977

60-
- name: Set up QEMU
61-
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
62-
6378
- name: Set up Docker Buildx
6479
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
6580
with:
6681
install: true
6782

68-
- name: Available buildx platforms
69-
run: echo ${{ steps.buildx.outputs.platforms }}
70-
7183
- name: Build and install core dependency locally
7284
working-directory: ./aws-lambda-java-core
7385
run: mvn clean install
@@ -76,20 +88,99 @@ jobs:
7688
working-directory: ./aws-lambda-java-serialization
7789
run: mvn clean install
7890

79-
- name: Test Runtime Interface Client xplatform build - Run 'build' target
91+
- name: Test Runtime Interface Client build - Run 'build-${{ matrix.arch }}' target
8092
working-directory: ./aws-lambda-java-runtime-interface-client
81-
run: make build
93+
run: make build-${{ matrix.arch }}
8294
env:
8395
IS_JAVA_8: true
8496

8597
- name: Save the built jar
8698
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
8799
with:
88-
name: aws-lambda-java-runtime-interface-client
100+
name: aws-lambda-java-runtime-interface-client-${{ matrix.arch }}
89101
path: ./aws-lambda-java-runtime-interface-client/target/aws-lambda-java-runtime-interface-client-*.jar
90102

91103
- name: Upload coverage to Codecov
92104
if: env.CODECOV_TOKEN != null
93105
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5
94106
env:
95107
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
108+
109+
integration-test-matrix:
110+
runs-on: ${{ matrix.arch.runner }}
111+
strategy:
112+
# Run every OS/arch combination to completion so one failure doesn't mask the others.
113+
fail-fast: false
114+
matrix:
115+
buildspec:
116+
- buildspec.os.alpine.yml
117+
- buildspec.os.amazoncorretto.yml
118+
- buildspec.os.amazonlinux.1.yml
119+
- buildspec.os.amazonlinux.2.yml
120+
- buildspec.os.debian.yml
121+
- buildspec.os.ubuntu.yml
122+
arch:
123+
- label: x64
124+
runner: ubuntu-latest
125+
platform: linux/amd64
126+
- label: arm64
127+
runner: ubuntu-24.04-arm
128+
platform: linux/arm64/v8
129+
exclude:
130+
# Amazon Linux 1 was never published for ARM64 (x86_64 only), so
131+
# public.ecr.aws/amazonlinux/amazonlinux:1 has no arm64 manifest.
132+
- buildspec: buildspec.os.amazonlinux.1.yml
133+
arch:
134+
label: arm64
135+
runner: ubuntu-24.04-arm
136+
platform: linux/arm64/v8
137+
name: "integration-test (${{ matrix.buildspec }} / ${{ matrix.arch.label }})"
138+
steps:
139+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
140+
141+
- name: Set up Docker Buildx
142+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
143+
with:
144+
install: true
145+
146+
- name: Run OS integration test - 'test-integ' target
147+
working-directory: ./aws-lambda-java-runtime-interface-client
148+
run: make test-integ BUILDSPEC=test/integration/codebuild/${{ matrix.buildspec }}
149+
env:
150+
PLATFORM_FILTER: ${{ matrix.arch.platform }}
151+
152+
integration-test:
153+
needs: integration-test-matrix
154+
if: always()
155+
runs-on: ubuntu-latest
156+
steps:
157+
- name: Check integration-test results
158+
run: |
159+
if [ "${{ needs.integration-test-matrix.result }}" != "success" ]; then
160+
echo "Integration tests failed on one or more OS/arch combinations"
161+
exit 1
162+
fi
163+
164+
smoke-test:
165+
needs: smoke-test-arch
166+
if: always()
167+
runs-on: ubuntu-latest
168+
steps:
169+
- name: Check smoke-test results
170+
run: |
171+
if [ "${{ needs.smoke-test-arch.result }}" != "success" ]; then
172+
echo "Smoke tests failed on one or more architectures"
173+
exit 1
174+
fi
175+
176+
build:
177+
needs: build-arch
178+
if: always()
179+
runs-on: ubuntu-latest
180+
steps:
181+
- name: Check build results
182+
run: |
183+
if [ "${{ needs.build-arch.result }}" != "success" ]; then
184+
echo "Build failed on one or more architectures"
185+
exit 1
186+
fi

aws-lambda-java-log4j2/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@ Example for Maven pom.xml
1212
<dependency>
1313
<groupId>com.amazonaws</groupId>
1414
<artifactId>aws-lambda-java-log4j2</artifactId>
15-
<version>1.6.4</version>
15+
<version>1.6.5</version>
1616
</dependency>
1717
<dependency>
1818
<groupId>org.apache.logging.log4j</groupId>
1919
<artifactId>log4j-core</artifactId>
20-
<version>2.25.4</version>
20+
<version>2.25.5</version>
2121
</dependency>
2222
<dependency>
2323
<groupId>org.apache.logging.log4j</groupId>
2424
<artifactId>log4j-api</artifactId>
25-
<version>2.25.4</version>
25+
<version>2.25.5</version>
2626
</dependency>
2727
<dependency>
2828
<groupId>org.apache.logging.log4j</groupId>
2929
<artifactId>log4j-layout-template-json</artifactId>
30-
<version>2.25.4</version>
30+
<version>2.25.5</version>
3131
</dependency>
3232
....
3333
</dependencies>
@@ -75,7 +75,7 @@ If you are using the [John Rengelman](https://github.com/johnrengelman/shadow) G
7575
7676
dependencies{
7777
...
78-
implementation group: 'com.amazonaws', name: 'aws-lambda-java-log4j2', version: '1.6.4'
78+
implementation group: 'com.amazonaws', name: 'aws-lambda-java-log4j2', version: '1.6.5'
7979
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: log4jVersion
8080
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: log4jVersion
8181
}

aws-lambda-java-log4j2/RELEASE.CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
### May 19, 2026
2+
`1.6.5`:
3+
- Updated `log4j-core` and `log4j-api` dependencies to `2.25.5`
4+
25
`1.6.4`:
36
- Fix regression in `1.6.3`
47

aws-lambda-java-log4j2/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<properties>
3838
<maven.compiler.source>1.8</maven.compiler.source>
3939
<maven.compiler.target>1.8</maven.compiler.target>
40-
<log4j.version>2.25.4</log4j.version>
40+
<log4j.version>2.25.5</log4j.version>
4141
<junit-jupiter.version>5.12.2</junit-jupiter.version>
4242
</properties>
4343

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
compile-flags.txt
22
ric-dev-environment/codeartifact-properties.mk
3+
4+
# aws-lambda-cpp prebuilt lib + headers, fetched and staged at build time
5+
src/main/jni/deps/aws-lambda-cpp/

aws-lambda-java-runtime-interface-client/Makefile

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,34 @@ test:
2626

2727
.PHONY: setup-codebuild-agent
2828
setup-codebuild-agent:
29-
docker build -t codebuild-agent \
29+
test/integration/codebuild-local/docker-retry.sh docker build --load -t codebuild-agent \
3030
--build-arg ARCHITECTURE=$(ARCHITECTURE_ALIAS) \
31-
- < test/integration/codebuild-local/Dockerfile.agent
31+
-f test/integration/codebuild-local/Dockerfile.agent \
32+
test/integration/codebuild-local
3233

34+
# Smoke tests are split per-architecture so CI can run each set on a native
35+
# runner. Running the linux/arm64/v8 combos under QEMU on an x86_64 host makes
36+
# `mvn install` recompile curl for aarch64 emulated, which takes ~30 minutes.
3337
.PHONY: test-smoke
34-
test-smoke: setup-codebuild-agent
38+
test-smoke: test-smoke-x86_64 test-smoke-aarch64
39+
40+
.PHONY: test-smoke-x86_64
41+
test-smoke-x86_64: setup-codebuild-agent
3542
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.alpine.yml alpine 3.15 corretto11 linux/amd64
36-
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.alpine.yml alpine 3.15 corretto11 linux/arm64/v8
3743
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 linux/amd64
44+
45+
.PHONY: test-smoke-aarch64
46+
test-smoke-aarch64: setup-codebuild-agent
47+
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.alpine.yml alpine 3.15 corretto11 linux/arm64/v8
3848
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 linux/arm64/v8
3949

50+
# BUILDSPEC can point to the buildspec directory (default, runs every OS) or to a
51+
# single buildspec file, which is how CI parallelizes the run across OSes.
52+
BUILDSPEC ?= test/integration/codebuild
53+
4054
.PHONY: test-integ
4155
test-integ: setup-codebuild-agent
42-
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_all.sh test/integration/codebuild
56+
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_all.sh $(BUILDSPEC)
4357

4458
# Command to run everytime you make changes to verify everything works
4559
.PHONY: dev
@@ -49,11 +63,25 @@ dev: test
4963
.PHONY: pr
5064
pr: test test-smoke
5165

66+
# Per-architecture PR checks so CI can run each on a native runner (no QEMU).
67+
.PHONY: pr-x86_64
68+
pr-x86_64: test test-smoke-x86_64
69+
70+
.PHONY: pr-aarch64
71+
pr-aarch64: test test-smoke-aarch64
72+
5273
.PHONY: build
53-
build:
54-
mvn clean install $(EXTRA_LOAD_ARG)
74+
build: build-x86_64 build-aarch64
75+
76+
.PHONY: build-x86_64
77+
build-x86_64:
78+
mvn clean install -DmultiArch=false $(EXTRA_LOAD_ARG)
5579
mvn install -P linux-x86_64 $(EXTRA_LOAD_ARG)
5680
mvn install -P linux_musl-x86_64 $(EXTRA_LOAD_ARG)
81+
82+
.PHONY: build-aarch64
83+
build-aarch64:
84+
mvn clean install -DmultiArch=false $(EXTRA_LOAD_ARG)
5785
mvn install -P linux-aarch64 $(EXTRA_LOAD_ARG)
5886
mvn install -P linux_musl-aarch64 $(EXTRA_LOAD_ARG)
5987

aws-lambda-java-runtime-interface-client/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ You can include this package in your preferred base image to make that base imag
1111

1212
### Creating a Docker Image for Lambda with the Runtime Interface Client
1313

14-
Choose a preferred base image. The Runtime Interface Client is tested on Amazon Linux, Alpine, Ubuntu, Debian, and CentOS. The requirements are that the image is:
14+
Choose a preferred base image. The Runtime Interface Client is tested on Amazon Linux, Alpine, Ubuntu, and Debian. The requirements are that the image is:
1515

1616
* built for x86_64 and ARM64
1717
* contains Java >= 8

aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ ARG AWS_REGION
77
RUN if [ -n "${AWS_REGION}" ]; then echo "${AWS_REGION}" > /etc/yum/vars/awsregion; fi
88

99
RUN yum install -y \
10-
cmake3 \
1110
tar \
1211
gzip \
1312
make \
@@ -33,18 +32,12 @@ RUN ./configure \
3332
make && \
3433
make install
3534

36-
# Install aws-lambda-cpp dependency
37-
ADD ./deps/aws-lambda-cpp-* /src/deps/aws-lambda-cpp
38-
RUN mkdir -p /src/deps/aws-lambda-cpp/build
39-
WORKDIR /src/deps/aws-lambda-cpp/build
40-
RUN cmake3 .. \
41-
-DENABLE_LTO=OFF \
42-
-DCMAKE_CXX_FLAGS="-fPIC -DBACKWARD_SYSTEM_UNKNOWN" \
43-
-DCMAKE_CXX_STANDARD=11 \
44-
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../artifacts \
45-
-DCMAKE_MODULE_PATH=$(pwd)/../../artifacts/lib/pkgconfig && \
46-
make && \
47-
make install
35+
# Install prebuilt aws-lambda-cpp dependency. The static library and headers
36+
# were fetched and GPG-verified on the host by build-jni-lib.sh; here we only
37+
# COPY them into the artifacts tree the native client links against (the build
38+
# container never reaches the network).
39+
COPY ./deps/aws-lambda-cpp/include /src/deps/artifacts/include
40+
COPY ./deps/aws-lambda-cpp/lib/libaws-lambda-runtime.a /src/deps/artifacts/lib/
4841

4942
# Build native client
5043
ADD *.cpp *.h /src/

aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ ARG CURL_VERSION
66
RUN apk update && \
77
apk add \
88
openjdk11 \
9-
cmake \
109
file \
1110
g++ \
1211
gcc \
@@ -31,17 +30,8 @@ RUN ./configure \
3130
make && \
3231
make install
3332

34-
# Install aws-lambda-cpp dependency
35-
ADD ./deps/aws-lambda-cpp-* /src/deps/aws-lambda-cpp
36-
RUN mkdir -p /src/deps/aws-lambda-cpp/build
37-
WORKDIR /src/deps/aws-lambda-cpp/build
38-
RUN cmake .. \
39-
-DCMAKE_CXX_FLAGS="-fPIC -DBACKWARD_SYSTEM_UNKNOWN" \
40-
-DCMAKE_CXX_STANDARD=11 \
41-
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../artifacts\
42-
-DCMAKE_MODULE_PATH=$(pwd)/../../artifacts/lib/pkgconfig && \
43-
make && \
44-
make install
33+
COPY ./deps/aws-lambda-cpp/include /src/deps/artifacts/include
34+
COPY ./deps/aws-lambda-cpp/lib/libaws-lambda-runtime.a /src/deps/artifacts/lib/
4535

4636
# Build native client
4737
ADD *.cpp *.h /src/

0 commit comments

Comments
 (0)