diff --git a/.github/workflows/aws-lambda-java-core.yml b/.github/workflows/aws-lambda-java-core.yml
index b1bed919f..ecd9e4ea0 100644
--- a/.github/workflows/aws-lambda-java-core.yml
+++ b/.github/workflows/aws-lambda-java-core.yml
@@ -1,9 +1,10 @@
# This workflow will be triggered if there will be changes to aws-lambda-java-core
-# package and it builds the package and the packages that depend on it.
+# package and it builds the package.
name: Java CI aws-lambda-java-core
on:
+ workflow_dispatch:
push:
branches: [ main ]
paths:
@@ -29,18 +30,7 @@ jobs:
with:
java-version: 8
distribution: corretto
-
- # Install base module
+ cache: maven
+
- name: Install core with Maven
run: mvn -B install --file aws-lambda-java-core/pom.xml
-
- # Package modules that depend on base module
- - name: Package log4j2 with Maven
- run: mvn -B package --file aws-lambda-java-log4j2/pom.xml
-
- # Test Runtime Interface Client
- - name: Run 'pr' target
- working-directory: ./aws-lambda-java-runtime-interface-client
- run: make pr
- env:
- IS_JAVA_8: true
diff --git a/.github/workflows/aws-lambda-java-events-sdk-transformer.yml b/.github/workflows/aws-lambda-java-events-sdk-transformer.yml
index 1f1f08870..4e3f7bde6 100644
--- a/.github/workflows/aws-lambda-java-events-sdk-transformer.yml
+++ b/.github/workflows/aws-lambda-java-events-sdk-transformer.yml
@@ -1,17 +1,21 @@
-# This workflow will be triggered if there will be changes to
-# aws-lambda-java-events-sdk-transformer package and it builds the package.
+# This workflow will be triggered if there will be changes to
+# aws-lambda-java-events-sdk-transformer package or its dependency (events),
+# and it builds the package.
name: Java CI aws-lambda-java-events-sdk-transformer
on:
+ workflow_dispatch:
push:
branches: [ main ]
paths:
- 'aws-lambda-java-events-sdk-transformer/**'
+ - 'aws-lambda-java-events/**'
pull_request:
branches: [ '*' ]
paths:
- 'aws-lambda-java-events-sdk-transformer/**'
+ - 'aws-lambda-java-events/**'
- '.github/workflows/aws-lambda-java-events-sdk-transformer.yml'
permissions:
@@ -29,11 +33,11 @@ jobs:
with:
java-version: 8
distribution: corretto
+ cache: maven
- # Install base module
+ # Install dependency
- name: Install events with Maven
run: mvn -B install --file aws-lambda-java-events/pom.xml
# Package target module
- name: Package events-sdk-transformer with Maven
run: mvn -B package --file aws-lambda-java-events-sdk-transformer/pom.xml
-
diff --git a/.github/workflows/aws-lambda-java-events.yml b/.github/workflows/aws-lambda-java-events.yml
index 2d101018d..ab6f1a172 100644
--- a/.github/workflows/aws-lambda-java-events.yml
+++ b/.github/workflows/aws-lambda-java-events.yml
@@ -1,9 +1,10 @@
# This workflow will be triggered if there will be changes to aws-lambda-java-events
-# package and it builds the package and the packages that depend on it.
+# package and it builds the package.
name: Java CI aws-lambda-java-events
on:
+ workflow_dispatch:
push:
branches: [ main ]
paths:
@@ -29,14 +30,7 @@ jobs:
with:
java-version: 8
distribution: corretto
-
- # Install base module
+ cache: maven
+
- name: Install events with Maven
run: mvn -B install --file aws-lambda-java-events/pom.xml
-
- # Package modules that depend on base module
- - name: Package serialization with Maven
- run: mvn -B package --file aws-lambda-java-serialization/pom.xml
- - name: Package events-sdk-transformer with Maven
- run: mvn -B package --file aws-lambda-java-events-sdk-transformer/pom.xml
-
diff --git a/.github/workflows/aws-lambda-java-log4j2.yml b/.github/workflows/aws-lambda-java-log4j2.yml
index e9f6a56c1..7df0831f9 100644
--- a/.github/workflows/aws-lambda-java-log4j2.yml
+++ b/.github/workflows/aws-lambda-java-log4j2.yml
@@ -1,17 +1,20 @@
-# This workflow will be triggered if there will be changes to
-# aws-lambda-java-log4j2 package and it builds the package.
+# This workflow will be triggered if there will be changes to
+# aws-lambda-java-log4j2 package or its dependency (core), and it builds the package.
name: Java CI aws-lambda-java-log4j2
on:
push:
+ workflow_dispatch:
branches: [ main ]
paths:
- 'aws-lambda-java-log4j2/**'
+ - 'aws-lambda-java-core/**'
pull_request:
branches: [ '*' ]
paths:
- 'aws-lambda-java-log4j2/**'
+ - 'aws-lambda-java-core/**'
- '.github/workflows/aws-lambda-java-log4j2.yml'
permissions:
@@ -29,11 +32,11 @@ jobs:
with:
java-version: 8
distribution: corretto
-
- # Install base module
+ cache: maven
+
+ # Install dependency
- name: Install core with Maven
run: mvn -B install --file aws-lambda-java-core/pom.xml
# Package target module
- name: Package log4j2 with Maven
run: mvn -B package --file aws-lambda-java-log4j2/pom.xml
-
diff --git a/.github/workflows/aws-lambda-java-profiler.yml b/.github/workflows/aws-lambda-java-profiler.yml
index a3afe3729..9fb5d2b18 100644
--- a/.github/workflows/aws-lambda-java-profiler.yml
+++ b/.github/workflows/aws-lambda-java-profiler.yml
@@ -29,6 +29,7 @@ jobs:
with:
java-version: 21
distribution: corretto
+ cache: maven
- name: Issue AWS credentials
uses: aws-actions/configure-aws-credentials@v4
diff --git a/.github/workflows/aws-lambda-java-serialization.yml b/.github/workflows/aws-lambda-java-serialization.yml
index 13b7e08b0..5a7060c74 100644
--- a/.github/workflows/aws-lambda-java-serialization.yml
+++ b/.github/workflows/aws-lambda-java-serialization.yml
@@ -1,17 +1,20 @@
-# This workflow will be triggered if there will be changes to aws-lambda-java-serialization
-# package and it builds the package and the packages that depend on it.
+# This workflow will be triggered if there will be changes to aws-lambda-java-serialization
+# package or its dependency (events), and it builds the package.
name: Java CI aws-lambda-java-serialization
on:
+ workflow_dispatch:
push:
branches: [ main ]
paths:
- 'aws-lambda-java-serialization/**'
+ - 'aws-lambda-java-events/**'
pull_request:
branches: [ '*' ]
paths:
- 'aws-lambda-java-serialization/**'
+ - 'aws-lambda-java-events/**'
- '.github/workflows/aws-lambda-java-serialization.yml'
permissions:
@@ -29,8 +32,9 @@ jobs:
with:
java-version: 8
distribution: corretto
-
- # Install base module
+ cache: maven
+
+ # Install dependency
- name: Install events with Maven
run: mvn -B install --file aws-lambda-java-events/pom.xml
diff --git a/.github/workflows/aws-lambda-java-tests.yml b/.github/workflows/aws-lambda-java-tests.yml
index 363647cc4..fddae31ad 100644
--- a/.github/workflows/aws-lambda-java-tests.yml
+++ b/.github/workflows/aws-lambda-java-tests.yml
@@ -1,5 +1,5 @@
# This workflow will be triggered if there will be changes to aws-lambda-java-tests
-# package and it builds the package and the packages that depend on it.
+# package or its dependencies (events, serialization), and it builds the package.
name: Java CI aws-lambda-java-tests
@@ -9,16 +9,14 @@ on:
branches: [ main ]
paths:
- 'aws-lambda-java-tests/**'
- - 'aws-lambda-java-runtime-interface-client/**'
- - 'aws-lambda-java-serialization/**'
- 'aws-lambda-java-events/**'
+ - 'aws-lambda-java-serialization/**'
pull_request:
branches: [ '*' ]
paths:
- 'aws-lambda-java-tests/**'
- - 'aws-lambda-java-runtime-interface-client/**'
- - 'aws-lambda-java-serialization/**'
- 'aws-lambda-java-events/**'
+ - 'aws-lambda-java-serialization/**'
- '.github/workflows/aws-lambda-java-tests.yml'
permissions:
@@ -36,8 +34,9 @@ jobs:
with:
java-version: 8
distribution: corretto
-
- # Install base module
+ cache: maven
+
+ # Install dependencies
- name: Install events with Maven
run: mvn -B install --file aws-lambda-java-events/pom.xml
- name: Install serialization with Maven
@@ -46,4 +45,3 @@ jobs:
# Package target module
- name: Package tests with Maven
run: mvn -B package --file aws-lambda-java-tests/pom.xml
-
diff --git a/.github/workflows/runtime-interface-client_merge_to_main.yml b/.github/workflows/runtime-interface-client_merge_to_main.yml
index 3560207f3..c4dcc8075 100644
--- a/.github/workflows/runtime-interface-client_merge_to_main.yml
+++ b/.github/workflows/runtime-interface-client_merge_to_main.yml
@@ -11,12 +11,12 @@
name: Publish artifact for aws-lambda-java-runtime-interface-client
on:
+ workflow_dispatch:
push:
branches: [ main ]
paths:
- 'aws-lambda-java-runtime-interface-client/**'
- '.github/workflows/runtime-interface-client_*.yml'
- workflow_dispatch:
jobs:
@@ -35,6 +35,7 @@ jobs:
with:
java-version: 8
distribution: corretto
+ cache: maven
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
diff --git a/.github/workflows/runtime-interface-client_pr.yml b/.github/workflows/runtime-interface-client_pr.yml
index dcad4fa0a..637991ac7 100644
--- a/.github/workflows/runtime-interface-client_pr.yml
+++ b/.github/workflows/runtime-interface-client_pr.yml
@@ -1,13 +1,17 @@
-# This workflow will be triggered if there will be changes to
-# aws-lambda-java-runtime-interface-client package and it builds the package.
+# This workflow will be triggered if there will be changes to
+# aws-lambda-java-runtime-interface-client package or its dependencies (core, serialization),
+# and it builds the package.
name: PR to runtime-interface-client
on:
+ workflow_dispatch:
pull_request:
branches: [ '*' ]
paths:
- 'aws-lambda-java-runtime-interface-client/**'
+ - 'aws-lambda-java-core/**'
+ - 'aws-lambda-java-serialization/**'
- '.github/workflows/runtime-interface-client_*.yml'
permissions:
@@ -17,15 +21,19 @@ jobs:
smoke-test:
runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java-version: [8, 11, 17, 21, 25]
steps:
- uses: actions/checkout@v5
- - name: Set up JDK 1.8
+ - name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
- java-version: 8
+ java-version: ${{ matrix.java-version }}
distribution: corretto
-
+ cache: maven
+
- name: Build and install core dependency locally
working-directory: ./aws-lambda-java-core
run: mvn clean install
@@ -38,8 +46,8 @@ jobs:
working-directory: ./aws-lambda-java-runtime-interface-client
run: make pr
env:
- IS_JAVA_8: true
-
+ IS_JAVA_8: ${{ matrix.java-version == 8 }}
+
build:
runs-on: ubuntu-latest
steps:
@@ -50,6 +58,7 @@ jobs:
with:
java-version: 8
distribution: corretto
+ cache: maven
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
@@ -61,7 +70,7 @@ jobs:
- name: Available buildx platforms
run: echo ${{ steps.buildx.outputs.platforms }}
-
+
- name: Build and install core dependency locally
working-directory: ./aws-lambda-java-core
run: mvn clean install
diff --git a/.github/workflows/samples.yml b/.github/workflows/samples.yml
index aebb708a7..3ef55ec22 100644
--- a/.github/workflows/samples.yml
+++ b/.github/workflows/samples.yml
@@ -1,17 +1,24 @@
-# This workflow will be triggered if there will be changes to aws-lambda-java-core
-# package and it builds the package and the packages that depend on it.
+# This workflow will be triggered if there will be changes to samples
+# or their dependencies (events, serialization, tests).
name: Java CI samples
on:
+ workflow_dispatch:
push:
branches: [ main ]
paths:
- 'samples/**'
+ - 'aws-lambda-java-events/**'
+ - 'aws-lambda-java-serialization/**'
+ - 'aws-lambda-java-tests/**'
pull_request:
branches: [ '*' ]
paths:
- 'samples/**'
+ - 'aws-lambda-java-events/**'
+ - 'aws-lambda-java-serialization/**'
+ - 'aws-lambda-java-tests/**'
- '.github/workflows/samples.yml'
permissions:
@@ -27,14 +34,13 @@ jobs:
with:
java-version: 8
distribution: corretto
+ cache: maven
- # Install events module
+ # Install dependencies
- name: Install events with Maven
run: mvn -B install --file aws-lambda-java-events/pom.xml
- # Install serialization module
- name: Install serialization with Maven
run: mvn -B install --file aws-lambda-java-serialization/pom.xml
- # Install tests module
- name: Install tests with Maven
run: mvn -B install --file aws-lambda-java-tests/pom.xml
@@ -54,6 +60,7 @@ jobs:
8
21
distribution: corretto
+ cache: maven
# Install events module using Java 8
- name: Install events with Maven
diff --git a/.gitignore b/.gitignore
index 5eb5456a1..dce5fdef6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,4 +37,17 @@ experimental/aws-lambda-java-profiler/integration_tests/helloworld/bin
/scratch/
.vscode
.kiro
-build
\ No newline at end of file
+build
+
+# Logs
+*.log
+
+# Maven flatten plugin
+.flattened-pom.xml
+
+# Vim swap files
+*.swp
+*.swo
+
+# Tool version manager
+mise.toml
diff --git a/aws-lambda-java-events-sdk-transformer/pom.xml b/aws-lambda-java-events-sdk-transformer/pom.xml
index d719ec8ac..7c72e98c4 100644
--- a/aws-lambda-java-events-sdk-transformer/pom.xml
+++ b/aws-lambda-java-events-sdk-transformer/pom.xml
@@ -38,6 +38,7 @@
1.8
1.11.914
2.15.40
+ 5.14.3
@@ -70,7 +71,7 @@
org.junit.jupiter
junit-jupiter-engine
- 5.7.0
+ ${junit-jupiter.version}
test
diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml
index 714c825d9..ba93601dc 100644
--- a/aws-lambda-java-events/pom.xml
+++ b/aws-lambda-java-events/pom.xml
@@ -39,6 +39,7 @@
UTF-8
2.20.1
2.40.1
+ 5.14.3
@@ -58,7 +59,7 @@
org.junit.jupiter
junit-jupiter-engine
- 5.9.2
+ ${junit-jupiter.version}
test
diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile
index 6c3a268fb..78cfa11a6 100644
--- a/aws-lambda-java-runtime-interface-client/Makefile
+++ b/aws-lambda-java-runtime-interface-client/Makefile
@@ -15,57 +15,63 @@ endif
# making it possible to publish resulting artifacts to a codeartifact maven repository
-include ric-dev-environment/codeartifact-repo.mk
-.PHONY: target
+
target:
$(info ${HELP_MESSAGE})
@exit 0
-.PHONY: test
+
test:
mvn test $(EXTRA_LOAD_ARG)
-.PHONY: setup-codebuild-agent
+
setup-codebuild-agent:
docker build -t codebuild-agent \
--build-arg ARCHITECTURE=$(ARCHITECTURE_ALIAS) \
- < test/integration/codebuild-local/Dockerfile.agent
-.PHONY: test-smoke
+
test-smoke: setup-codebuild-agent
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
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
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 linux/amd64
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
-.PHONY: test-integ
+
test-integ: setup-codebuild-agent
CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_all.sh test/integration/codebuild
# Command to run everytime you make changes to verify everything works
-.PHONY: dev
+
dev: test
# Verifications to run before sending a pull request
-.PHONY: pr
+
pr: test test-smoke
-.PHONY: build
+
+# The default `mvn clean install` builds all 4 native .so variants (x86_64/aarch64 × glibc/musl)
+# and bundles them into a single jar (see build-jni-lib.sh), runs the tests for the host
+# environment, and updates coverage data. This is sufficient for what we want to do here.
+#
+# Running profile-specific builds (e.g., `mvn install -P linux-aarch64`) does NOT test the
+# cross-compiled .so — JniHelper.load() tries each .so in order and always loads the first
+# one matching the host platform (linux-x86_64 on GitHub Actions runners), so the other
+# variants are never exercised.
+#
+# Platform-specific tests are run through test-smoke via codebuild containers.
+
build:
- mvn clean install $(EXTRA_LOAD_ARG)
- mvn install -P linux-x86_64 $(EXTRA_LOAD_ARG)
- mvn install -P linux_musl-x86_64 $(EXTRA_LOAD_ARG)
- mvn install -P linux-aarch64 $(EXTRA_LOAD_ARG)
- mvn install -P linux_musl-aarch64 $(EXTRA_LOAD_ARG)
+ mvn clean install $(EXTRA_LOAD_ARG)
-.PHONY: publish
publish:
./ric-dev-environment/publish_snapshot.sh
-.PHONY: publish
+
test-publish:
./ric-dev-environment/test-platform-specific-jar-snapshot.sh
-.PHONY: test-rie
+
test-rie:
./scripts/test-rie.sh "EchoHandler::handleRequest"
@@ -80,3 +86,5 @@ TARGETS
test Run the Unit tests.
test-rie Build and test RIC locally with Lambda Runtime Interface Emulator. (Requires building the project first)
endef
+
+.PHONY: target test setup-codebuild-agent test-smoke test-integ dev pr build publish publish test-rie
\ No newline at end of file
diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml
index 65304c61a..f84ffe558 100644
--- a/aws-lambda-java-runtime-interface-client/pom.xml
+++ b/aws-lambda-java-runtime-interface-client/pom.xml
@@ -37,7 +37,7 @@
0.8.12
2.4
3.1.1
- 5.9.2
+ 5.14.3
3.4.0