Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 24866d6

Browse files
authoredSep 29, 2021
Add ARM64 architecture support (aws#36)
Add ARM64 architecture support
1 parent f9373b3 commit 24866d6

15 files changed

+286
-112
lines changed
 

‎package-lock.json

Lines changed: 21 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aws-lambda-ric",
3-
"version": "1.1.0",
3+
"version": "2.0.0",
44
"description": "AWS Lambda Runtime Interface Client for NodeJs",
55
"homepage": "https://github.com/aws/aws-lambda-nodejs-runtime-interface-client",
66
"main": "lib/index.js",

‎scripts/preinstall.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ else
3131
--prefix "$ARTIFACTS_DIR" \
3232
--disable-shared \
3333
--without-ssl \
34+
--with-pic \
3435
--without-zlib && \
3536
make && \
3637
make install

‎test/integration/codebuild/buildspec.os.alpine.1.yml

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -28,15 +27,25 @@ phases:
2827
- echo "Extracting and including the Runtime Interface Emulator"
2928
- SCRATCH_DIR=".scratch"
3029
- mkdir "${SCRATCH_DIR}"
31-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
30+
- ARCHITECTURE=$(arch)
31+
- >
32+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
33+
RIE="aws-lambda-rie"
34+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
35+
RIE="aws-lambda-rie-arm64"
36+
else
37+
echo "Architecture $ARCHITECTURE is not currently supported."
38+
exit 1
39+
fi
40+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3241
- >
3342
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3443
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3544
- >
3645
echo "RUN apk add curl" >> \
3746
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3847
- >
39-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
48+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
4049
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
4150
- >
4251
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -61,12 +70,11 @@ phases:
6170
- >
6271
docker run \
6372
--detach \
64-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6573
--name "${OS_DISTRIBUTION}-app" \
6674
--network "${OS_DISTRIBUTION}-network" \
6775
--entrypoint="" \
6876
"${IMAGE_TAG}" \
69-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
77+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
7078
- sleep 2
7179
- >
7280
docker run \
@@ -82,19 +90,20 @@ phases:
8290
echo "Response: ${actual}"
8391
if [[ "$actual" != "$expected" ]]; then
8492
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
93+
exit -1
94+
fi
95+
finally:
96+
- |
8597
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8698
echo
87-
docker logs "${OS_DISTRIBUTION}-app"
99+
docker logs "${OS_DISTRIBUTION}-app" || true
88100
echo
89101
echo "---------------------------------------------------"
90102
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
91103
echo
92-
docker logs "${OS_DISTRIBUTION}-tester"
104+
docker logs "${OS_DISTRIBUTION}-tester" || true
93105
echo
94106
echo "---------------------------------------------------"
95-
exit -1
96-
fi
97-
finally:
98107
- echo "Cleaning up..."
99108
- docker stop "${OS_DISTRIBUTION}-app" || true
100109
- docker rm --force "${OS_DISTRIBUTION}-app" || true

‎test/integration/codebuild/buildspec.os.alpine.2.yml

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -26,15 +25,25 @@ phases:
2625
- echo "Extracting and including the Runtime Interface Emulator"
2726
- SCRATCH_DIR=".scratch"
2827
- mkdir "${SCRATCH_DIR}"
29-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
28+
- ARCHITECTURE=$(arch)
29+
- >
30+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
31+
RIE="aws-lambda-rie"
32+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
33+
RIE="aws-lambda-rie-arm64"
34+
else
35+
echo "Architecture $ARCHITECTURE is not currently supported."
36+
exit 1
37+
fi
38+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3039
- >
3140
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3241
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3342
- >
3443
echo "RUN apk add curl" >> \
3544
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3645
- >
37-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
46+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
3847
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3948
- >
4049
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -59,12 +68,11 @@ phases:
5968
- >
6069
docker run \
6170
--detach \
62-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6371
--name "${OS_DISTRIBUTION}-app" \
6472
--network "${OS_DISTRIBUTION}-network" \
6573
--entrypoint="" \
6674
"${IMAGE_TAG}" \
67-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
75+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
6876
- sleep 2
6977
- >
7078
docker run \
@@ -80,19 +88,20 @@ phases:
8088
echo "Response: ${actual}"
8189
if [[ "$actual" != "$expected" ]]; then
8290
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
91+
exit -1
92+
fi
93+
finally:
94+
- |
8395
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8496
echo
85-
docker logs "${OS_DISTRIBUTION}-app"
97+
docker logs "${OS_DISTRIBUTION}-app" || true
8698
echo
8799
echo "---------------------------------------------------"
88100
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
89101
echo
90-
docker logs "${OS_DISTRIBUTION}-tester"
102+
docker logs "${OS_DISTRIBUTION}-tester" || true
91103
echo
92104
echo "---------------------------------------------------"
93-
exit -1
94-
fi
95-
finally:
96105
- echo "Cleaning up..."
97106
- docker stop "${OS_DISTRIBUTION}-app" || true
98107
- docker rm --force "${OS_DISTRIBUTION}-app" || true

‎test/integration/codebuild/buildspec.os.alpine.3.yml

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -26,15 +25,25 @@ phases:
2625
- echo "Extracting and including the Runtime Interface Emulator"
2726
- SCRATCH_DIR=".scratch"
2827
- mkdir "${SCRATCH_DIR}"
29-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
28+
- ARCHITECTURE=$(arch)
29+
- >
30+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
31+
RIE="aws-lambda-rie"
32+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
33+
RIE="aws-lambda-rie-arm64"
34+
else
35+
echo "Architecture $ARCHITECTURE is not currently supported."
36+
exit 1
37+
fi
38+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3039
- >
3140
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3241
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3342
- >
3443
echo "RUN apk add curl" >> \
3544
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3645
- >
37-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
46+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
3847
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3948
- >
4049
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -59,12 +68,11 @@ phases:
5968
- >
6069
docker run \
6170
--detach \
62-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6371
--name "${OS_DISTRIBUTION}-app" \
6472
--network "${OS_DISTRIBUTION}-network" \
6573
--entrypoint="" \
6674
"${IMAGE_TAG}" \
67-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
75+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
6876
- sleep 2
6977
- >
7078
docker run \
@@ -80,19 +88,20 @@ phases:
8088
echo "Response: ${actual}"
8189
if [[ "$actual" != "$expected" ]]; then
8290
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
91+
exit -1
92+
fi
93+
finally:
94+
- |
8395
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8496
echo
85-
docker logs "${OS_DISTRIBUTION}-app"
97+
docker logs "${OS_DISTRIBUTION}-app" || true
8698
echo
8799
echo "---------------------------------------------------"
88100
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
89101
echo
90-
docker logs "${OS_DISTRIBUTION}-tester"
102+
docker logs "${OS_DISTRIBUTION}-tester" || true
91103
echo
92104
echo "---------------------------------------------------"
93-
exit -1
94-
fi
95-
finally:
96105
- echo "Cleaning up..."
97106
- docker stop "${OS_DISTRIBUTION}-app" || true
98107
- docker rm --force "${OS_DISTRIBUTION}-app" || true

‎test/integration/codebuild/buildspec.os.amazonlinux.yml renamed to ‎test/integration/codebuild/buildspec.os.amazonlinux.1.yml

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
1615
variables:
1716
DISTRO_VERSION:
1817
- "1"
19-
- "2"
2018
RUNTIME_VERSION:
2119
- "10"
2220
- "12"
@@ -28,12 +26,22 @@ phases:
2826
- echo "Extracting and including the Runtime Interface Emulator"
2927
- SCRATCH_DIR=".scratch"
3028
- mkdir "${SCRATCH_DIR}"
31-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
29+
- ARCHITECTURE=$(arch)
30+
- >
31+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
32+
RIE="aws-lambda-rie"
33+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
34+
RIE="aws-lambda-rie-arm64"
35+
else
36+
echo "Architecture $ARCHITECTURE is not currently supported."
37+
exit 1
38+
fi
39+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3240
- >
3341
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3442
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3543
- >
36-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
44+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
3745
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3846
- >
3947
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -49,7 +57,8 @@ phases:
4957
-f "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" \
5058
-t "${IMAGE_TAG}" \
5159
--build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \
52-
--build-arg DISTRO_VERSION="${DISTRO_VERSION}"
60+
--build-arg DISTRO_VERSION="${DISTRO_VERSION}" \
61+
--build-arg ARCHITECTURE="${ARCHITECTURE}"
5362
build:
5463
commands:
5564
- set -x
@@ -58,12 +67,11 @@ phases:
5867
- >
5968
docker run \
6069
--detach \
61-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6270
--name "${OS_DISTRIBUTION}-app" \
6371
--network "${OS_DISTRIBUTION}-network" \
6472
--entrypoint="" \
6573
"${IMAGE_TAG}" \
66-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
74+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
6775
- sleep 2
6876
- >
6977
docker run \
@@ -79,19 +87,20 @@ phases:
7987
echo "Response: ${actual}"
8088
if [[ "$actual" != "$expected" ]]; then
8189
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
90+
exit -1
91+
fi
92+
finally:
93+
- |
8294
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8395
echo
84-
docker logs "${OS_DISTRIBUTION}-app"
96+
docker logs "${OS_DISTRIBUTION}-app" || true
8597
echo
8698
echo "---------------------------------------------------"
8799
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
88100
echo
89-
docker logs "${OS_DISTRIBUTION}-tester"
101+
docker logs "${OS_DISTRIBUTION}-tester" || true
90102
echo
91103
echo "---------------------------------------------------"
92-
exit -1
93-
fi
94-
finally:
95104
- echo "Cleaning up..."
96105
- docker stop "${OS_DISTRIBUTION}-app" || true
97106
- docker rm --force "${OS_DISTRIBUTION}-app" || true
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
version: 0.2
2+
3+
env:
4+
variables:
5+
OS_DISTRIBUTION: amazonlinux
6+
NPX_BINARY_LOCATION: "/usr/bin/npx"
7+
batch:
8+
build-matrix:
9+
static:
10+
ignore-failure: false
11+
env:
12+
privileged-mode: true
13+
dynamic:
14+
env:
15+
variables:
16+
DISTRO_VERSION:
17+
- "2"
18+
RUNTIME_VERSION:
19+
- "10"
20+
- "12"
21+
- "14"
22+
phases:
23+
pre_build:
24+
commands:
25+
- export IMAGE_TAG="nodejs-${OS_DISTRIBUTION}-${DISTRO_VERSION}:${RUNTIME_VERSION}"
26+
- echo "Extracting and including the Runtime Interface Emulator"
27+
- SCRATCH_DIR=".scratch"
28+
- mkdir "${SCRATCH_DIR}"
29+
- ARCHITECTURE=$(arch)
30+
- >
31+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
32+
RIE="aws-lambda-rie"
33+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
34+
RIE="aws-lambda-rie-arm64"
35+
else
36+
echo "Architecture $ARCHITECTURE is not currently supported."
37+
exit 1
38+
fi
39+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
40+
- >
41+
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
42+
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
43+
- >
44+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
45+
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
46+
- >
47+
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
48+
then
49+
echo "DockerHub credentials not set as CodeBuild environment variables. Continuing without docker login."
50+
else
51+
echo "Performing DockerHub login . . ."
52+
docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
53+
fi
54+
- echo "Building image ${IMAGE_TAG}"
55+
- >
56+
docker build . \
57+
-f "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" \
58+
-t "${IMAGE_TAG}" \
59+
--build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \
60+
--build-arg DISTRO_VERSION="${DISTRO_VERSION}" \
61+
--build-arg ARCHITECTURE="${ARCHITECTURE}"
62+
build:
63+
commands:
64+
- set -x
65+
- echo "Running Image ${IMAGE_TAG}"
66+
- docker network create "${OS_DISTRIBUTION}-network"
67+
- >
68+
docker run \
69+
--detach \
70+
--name "${OS_DISTRIBUTION}-app" \
71+
--network "${OS_DISTRIBUTION}-network" \
72+
--entrypoint="" \
73+
"${IMAGE_TAG}" \
74+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
75+
- sleep 2
76+
- >
77+
docker run \
78+
--name "${OS_DISTRIBUTION}-tester" \
79+
--env "TARGET=${OS_DISTRIBUTION}-app" \
80+
--network "${OS_DISTRIBUTION}-network" \
81+
--entrypoint="" \
82+
"${IMAGE_TAG}" \
83+
sh -c 'curl -X POST "http://${TARGET}:8080/2015-03-31/functions/function/invocations" -d "{}" --max-time 10'
84+
- actual="$(docker logs --tail 1 "${OS_DISTRIBUTION}-tester" | xargs)"
85+
- expected='success'
86+
- |
87+
echo "Response: ${actual}"
88+
if [[ "$actual" != "$expected" ]]; then
89+
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
90+
exit -1
91+
fi
92+
finally:
93+
- |
94+
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
95+
echo
96+
docker logs "${OS_DISTRIBUTION}-app" || true
97+
echo
98+
echo "---------------------------------------------------"
99+
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
100+
echo
101+
docker logs "${OS_DISTRIBUTION}-tester" || true
102+
echo
103+
echo "---------------------------------------------------"
104+
- echo "Cleaning up..."
105+
- docker stop "${OS_DISTRIBUTION}-app" || true
106+
- docker rm --force "${OS_DISTRIBUTION}-app" || true
107+
- docker stop "${OS_DISTRIBUTION}-tester" || true
108+
- docker rm --force "${OS_DISTRIBUTION}-tester" || true
109+
- docker network rm "${OS_DISTRIBUTION}-network" || true

‎test/integration/codebuild/buildspec.os.centos.yml

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -28,12 +27,22 @@ phases:
2827
- echo "Extracting and including the Runtime Interface Emulator"
2928
- SCRATCH_DIR=".scratch"
3029
- mkdir "${SCRATCH_DIR}"
31-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
30+
- ARCHITECTURE=$(arch)
31+
- >
32+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
33+
RIE="aws-lambda-rie"
34+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
35+
RIE="aws-lambda-rie-arm64"
36+
else
37+
echo "Architecture $ARCHITECTURE is not currently supported."
38+
exit 1
39+
fi
40+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3241
- >
3342
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3443
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3544
- >
36-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
45+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
3746
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3847
- >
3948
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -49,7 +58,8 @@ phases:
4958
-f "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" \
5059
-t "${IMAGE_TAG}" \
5160
--build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \
52-
--build-arg DISTRO_VERSION="${DISTRO_VERSION}"
61+
--build-arg DISTRO_VERSION="${DISTRO_VERSION}" \
62+
--build-arg ARCHITECTURE="${ARCHITECTURE}"
5363
build:
5464
commands:
5565
- set -x
@@ -58,12 +68,11 @@ phases:
5868
- >
5969
docker run \
6070
--detach \
61-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6271
--name "${OS_DISTRIBUTION}-app" \
6372
--network "${OS_DISTRIBUTION}-network" \
6473
--entrypoint="" \
6574
"${IMAGE_TAG}" \
66-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
75+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
6776
- sleep 2
6877
- >
6978
docker run \
@@ -79,19 +88,20 @@ phases:
7988
echo "Response: ${actual}"
8089
if [[ "$actual" != "$expected" ]]; then
8190
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
91+
exit -1
92+
fi
93+
finally:
94+
- |
8295
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8396
echo
84-
docker logs "${OS_DISTRIBUTION}-app"
97+
docker logs "${OS_DISTRIBUTION}-app" || true
8598
echo
8699
echo "---------------------------------------------------"
87100
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
88101
echo
89-
docker logs "${OS_DISTRIBUTION}-tester"
102+
docker logs "${OS_DISTRIBUTION}-tester" || true
90103
echo
91104
echo "---------------------------------------------------"
92-
exit -1
93-
fi
94-
finally:
95105
- echo "Cleaning up..."
96106
- docker stop "${OS_DISTRIBUTION}-app" || true
97107
- docker rm --force "${OS_DISTRIBUTION}-app" || true

‎test/integration/codebuild/buildspec.os.debian.yml

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -27,12 +26,22 @@ phases:
2726
- echo "Extracting and including the Runtime Interface Emulator"
2827
- SCRATCH_DIR=".scratch"
2928
- mkdir "${SCRATCH_DIR}"
30-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
29+
- ARCHITECTURE=$(arch)
30+
- >
31+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
32+
RIE="aws-lambda-rie"
33+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
34+
RIE="aws-lambda-rie-arm64"
35+
else
36+
echo "Architecture $ARCHITECTURE is not currently supported."
37+
exit 1
38+
fi
39+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3140
- >
3241
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3342
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3443
- >
35-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
44+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
3645
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3746
- >
3847
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -60,12 +69,11 @@ phases:
6069
- >
6170
docker run \
6271
--detach \
63-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6472
--name "${OS_DISTRIBUTION}-app" \
6573
--network "${OS_DISTRIBUTION}-network" \
6674
--entrypoint="" \
6775
"${IMAGE_TAG}" \
68-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
76+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
6977
- sleep 2
7078
- >
7179
docker run \
@@ -81,19 +89,20 @@ phases:
8189
echo "Response: ${actual}"
8290
if [[ "$actual" != "$expected" ]]; then
8391
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
92+
exit -1
93+
fi
94+
finally:
95+
- |
8496
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8597
echo
86-
docker logs "${OS_DISTRIBUTION}-app"
98+
docker logs "${OS_DISTRIBUTION}-app" || true
8799
echo
88100
echo "---------------------------------------------------"
89101
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
90102
echo
91-
docker logs "${OS_DISTRIBUTION}-tester"
103+
docker logs "${OS_DISTRIBUTION}-tester" || true
92104
echo
93105
echo "---------------------------------------------------"
94-
exit -1
95-
fi
96-
finally:
97106
- echo "Cleaning up..."
98107
- docker stop "${OS_DISTRIBUTION}-app" || true
99108
- docker rm --force "${OS_DISTRIBUTION}-app" || true

‎test/integration/codebuild/buildspec.os.ubuntu.yml

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -29,12 +28,22 @@ phases:
2928
- echo "Extracting and including the Runtime Interface Emulator"
3029
- SCRATCH_DIR=".scratch"
3130
- mkdir "${SCRATCH_DIR}"
32-
- tar -xvf test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
31+
- ARCHITECTURE=$(arch)
32+
- >
33+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
34+
RIE="aws-lambda-rie"
35+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
36+
RIE="aws-lambda-rie-arm64"
37+
else
38+
echo "Architecture $ARCHITECTURE is not currently supported."
39+
exit 1
40+
fi
41+
- tar -xvf test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
3342
- >
3443
cp "test/integration/docker/Dockerfile.echo.${OS_DISTRIBUTION}" \
3544
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3645
- >
37-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
46+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
3847
"${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp"
3948
- >
4049
if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]];
@@ -50,7 +59,8 @@ phases:
5059
-f "${SCRATCH_DIR}/Dockerfile.echo.${OS_DISTRIBUTION}.tmp" \
5160
-t "${IMAGE_TAG}" \
5261
--build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \
53-
--build-arg DISTRO_VERSION="${DISTRO_VERSION}"
62+
--build-arg DISTRO_VERSION="${DISTRO_VERSION}" \
63+
--build-arg ARCHITECTURE="${ARCHITECTURE}"
5464
build:
5565
commands:
5666
- set -x
@@ -59,12 +69,11 @@ phases:
5969
- >
6070
docker run \
6171
--detach \
62-
-e "NPX_BINARY_LOCATION=${NPX_BINARY_LOCATION}" \
6372
--name "${OS_DISTRIBUTION}-app" \
6473
--network "${OS_DISTRIBUTION}-network" \
6574
--entrypoint="" \
6675
"${IMAGE_TAG}" \
67-
sh -c '/usr/bin/aws-lambda-rie ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler'
76+
sh -c "/usr/bin/${RIE} ${NPX_BINARY_LOCATION} aws-lambda-ric index.handler"
6877
- sleep 2
6978
- >
7079
docker run \
@@ -80,19 +89,20 @@ phases:
8089
echo "Response: ${actual}"
8190
if [[ "$actual" != "$expected" ]]; then
8291
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
92+
exit -1
93+
fi
94+
finally:
95+
- |
8396
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
8497
echo
85-
docker logs "${OS_DISTRIBUTION}-app"
98+
docker logs "${OS_DISTRIBUTION}-app" || true
8699
echo
87100
echo "---------------------------------------------------"
88101
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
89102
echo
90-
docker logs "${OS_DISTRIBUTION}-tester"
103+
docker logs "${OS_DISTRIBUTION}-tester" || true
91104
echo
92105
echo "---------------------------------------------------"
93-
exit -1
94-
fi
95-
finally:
96106
- echo "Cleaning up..."
97107
- docker stop "${OS_DISTRIBUTION}-app" || true
98108
- docker rm --force "${OS_DISTRIBUTION}-app" || true

‎test/integration/docker/Dockerfile.echo.amazonlinux

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,21 @@ RUN curl -sL https://rpm.nodesource.com/setup_${RUNTIME_VERSION}.x | bash - && \
1515

1616
# Stage 2 - build function and dependencies
1717
FROM node-amazonlinux AS build-image
18+
ARG ARCHITECTURE
1819
# Install aws-lambda-cpp build dependencies
1920
RUN yum install -y \
2021
tar \
2122
gzip \
2223
make \
24+
wget \
2325
autoconf \
2426
automake \
2527
libtool \
2628
libcurl-devel \
2729
gcc-c++
28-
# Install CMake > 3.9
29-
RUN if [ "$(printf '%s\n' "3.9.0" "$(cmake --version | head -n1 | tr -dc '0-9.')" | sort -V | head -n1)" != "3.9.0" ]; then \
30-
curl -o cmake3.tar.gz https://cmake.org/files/v3.10/cmake-3.10.0.tar.gz && \
31-
tar -xzf cmake3.tar.gz && \
32-
cd cmake-3.10.0 && \
33-
./bootstrap && \
34-
make && \
35-
make install \
36-
; fi
30+
# Install a modern CMake
31+
RUN wget --quiet -O cmake-install https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-${ARCHITECTURE}.sh && \
32+
sh cmake-install --skip-license --prefix=/usr --exclude-subdirectory;
3733

3834
# Include global arg in this stage of the build
3935
ARG FUNCTION_DIR

‎test/integration/docker/Dockerfile.echo.centos

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,21 @@ RUN curl -sL https://rpm.nodesource.com/setup_${RUNTIME_VERSION}.x | bash - && \
1515

1616
# Stage 2 - build function and dependencies
1717
FROM node-centos AS build-image
18+
ARG ARCHITECTURE
1819
# Install aws-lambda-cpp build dependencies
1920
RUN yum install -y \
2021
tar \
2122
gzip \
2223
make \
24+
wget \
2325
autoconf \
2426
automake \
2527
libtool \
2628
libcurl-devel \
2729
gcc-c++
28-
# Install CMake > 3.9
29-
RUN curl -o cmake3.tar.gz https://cmake.org/files/v3.10/cmake-3.10.0.tar.gz && \
30-
tar -xzf cmake3.tar.gz && \
31-
cd cmake-3.10.0 && \
32-
./bootstrap && \
33-
make && \
34-
make install
30+
# Install a modern CMake
31+
RUN wget --quiet -O cmake-install https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-${ARCHITECTURE}.sh && \
32+
sh cmake-install --skip-license --prefix=/usr --exclude-subdirectory;
3533

3634
# Include global arg in this stage of the build
3735
ARG FUNCTION_DIR

‎test/integration/docker/Dockerfile.echo.ubuntu

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ RUN apt-get update && \
1919

2020
# Stage 2 - build function and dependencies
2121
FROM node-ubuntu AS build-image
22+
ARG ARCHITECTURE
2223
# Install aws-lambda-cpp build dependencies
2324
RUN apt-get update && \
2425
apt-get install -y \
@@ -32,16 +33,11 @@ RUN apt-get update && \
3233
autoconf \
3334
automake \
3435
libtool \
36+
wget \
3537
libcurl4-openssl-dev
36-
# Install CMake > 3.9 for Ubuntu 16.04
37-
RUN if [ "$(printf '%s\n' "3.9.0" "$(cmake --version | head -n1 | tr -dc '0-9.')" | sort -V | head -n1)" != "3.9.0" ]; then \
38-
curl -o cmake3.tar.gz https://cmake.org/files/v3.10/cmake-3.10.0.tar.gz && \
39-
tar -xzf cmake3.tar.gz && \
40-
cd cmake-3.10.0 && \
41-
./bootstrap && \
42-
make && \
43-
make install \
44-
; fi
38+
# Install a modern CMake
39+
RUN wget --quiet -O cmake-install https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-${ARCHITECTURE}.sh && \
40+
sh cmake-install --skip-license --prefix=/usr --exclude-subdirectory;
4541

4642
# Include global arg in this stage of the build
4743
ARG FUNCTION_DIR
Binary file not shown.

0 commit comments

Comments
 (0)
Please sign in to comment.