Skip to content

Commit 084932f

Browse files
committed
Merge branch 'coralogix-nodejs-autoinstrumentation' of github.com:coralogix/opentelemetry-lambda into coralogix-nodejs-autoinstrumentation
2 parents 475135f + b92884b commit 084932f

8 files changed

Lines changed: 1275 additions & 179 deletions

File tree

.github/workflows/publish-nodejs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,5 @@ jobs:
104104
- name: Publish layer
105105
env:
106106
LAYER_NAME: "coralogix-opentelemetry-nodejs-wrapper"
107-
COMPATIBLE_RUNTIMES: "nodejs16.x nodejs18.x nodejs20.x"
107+
COMPATIBLE_RUNTIMES: "nodejs18.x nodejs20.x nodejs22.x"
108108
run: ./ci-scripts/publish_${{ inputs.environment }}.sh

ci-scripts/build_nodejs_layer.sh

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,53 +30,56 @@ echo "CWD=$CWD"
3030
npm cache clean --force
3131

3232
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH" > /dev/null
33-
# Generate version files in opentelemetry-js-contrib
34-
npx lerna@6.6.2 run version:update # Newer versions have trouble with our lerna.json which contains `useWorkspaces`
3533
# Prepare opentelemetry-js-contrib
3634
npm install
35+
# Generate version files in opentelemetry-js-contrib
36+
# Lerna 9 no longer requires useWorkspaces configuration - it uses npm workspaces by default
37+
npm run version:update
3738
popd > /dev/null
3839

39-
# Build opentelemetry-test-utils
40-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/opentelemetry-test-utils" > /dev/null
40+
# Build contrib-test-utils
41+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/contrib-test-utils" > /dev/null
4142
npm install && npm run compile
4243
popd > /dev/null
4344

4445
# Build opentelemetry-propagator-aws-xray
45-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/propagators/propagator-aws-xray" > /dev/null
46+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/propagator-aws-xray" > /dev/null
4647
npm install --ignore-scripts && npm run compile
4748
popd > /dev/null
4849

4950
# Build opentelemetry-propagator-aws-xray-lambda
50-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/propagators/propagator-aws-xray-lambda" > /dev/null
51+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/propagator-aws-xray-lambda" > /dev/null
5152
npm install && npm run compile
5253
popd > /dev/null
5354

54-
# Build opentelemetry-propagation-utils
55-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/opentelemetry-propagation-utils" > /dev/null
55+
# Build propagation-utils
56+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/propagation-utils" > /dev/null
5657
npm install && npm run compile
5758
popd > /dev/null
5859

5960
# Build opentelemetry-instrumentation-aws-lambda
60-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/plugins/node/opentelemetry-instrumentation-aws-lambda" > /dev/null
61+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/instrumentation-aws-lambda" > /dev/null
6162
rm -f opentelemetry-instrumentation-aws-lambda-*.tgz
6263
npm install --ignore-scripts && npm run compile && npm pack --ignore-scripts
6364
popd > /dev/null
6465

6566
# Build opentelemetry-instrumentation-mongodb
66-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/plugins/node/opentelemetry-instrumentation-mongodb" > /dev/null
67+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/instrumentation-mongodb" > /dev/null
6768
rm -f opentelemetry-instrumentation-mongodb-*.tgz
6869
npm install --ignore-scripts && npm run compile && npm pack --ignore-scripts
6970
popd > /dev/null
7071

7172
# Build opentelemetry-instrumentation-aws-sdk
72-
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/plugins/node/opentelemetry-instrumentation-aws-sdk" > /dev/null
73+
pushd "$OPENTELEMETRY_JS_CONTRIB_PATH/packages/instrumentation-aws-sdk" > /dev/null
7374
rm -f opentelemetry-instrumentation-aws-sdk-*.tgz
7475
npm install --ignore-scripts && npm run compile && npm pack --ignore-scripts
7576
popd > /dev/null
7677

7778
# Prepare opentelemetry-js
7879
pushd "$OPENTELEMETRY_JS_PATH" > /dev/null
7980
npm install
81+
# Generate version files in opentelemetry-js (required for TypeScript compilation)
82+
npx nx run-many -t version
8083
popd > /dev/null
8184

8285
# Build sdk-logs
@@ -106,9 +109,9 @@ popd > /dev/null
106109
# Install forked libraries in cx-wrapper
107110
pushd "./nodejs/packages/cx-wrapper" > /dev/null
108111
npm install \
109-
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/plugins/node/opentelemetry-instrumentation-aws-lambda/opentelemetry-instrumentation-aws-lambda-*.tgz \
110-
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/plugins/node/opentelemetry-instrumentation-mongodb/opentelemetry-instrumentation-mongodb-*.tgz \
111-
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/plugins/node/opentelemetry-instrumentation-aws-sdk/opentelemetry-instrumentation-aws-sdk-*.tgz \
112+
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/packages/instrumentation-aws-lambda/opentelemetry-instrumentation-aws-lambda-*.tgz \
113+
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/packages/instrumentation-mongodb/opentelemetry-instrumentation-mongodb-*.tgz \
114+
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/packages/instrumentation-aws-sdk/opentelemetry-instrumentation-aws-sdk-*.tgz \
112115
"${OPENTELEMETRY_JS_PATH}"/experimental/packages/opentelemetry-instrumentation/opentelemetry-instrumentation-*.tgz \
113116
"${IITM_PATH}"/import-in-the-middle-*.tgz
114117
popd > /dev/null
@@ -122,9 +125,9 @@ popd > /dev/null
122125
# Install libraries in layer
123126
pushd "./nodejs/packages/layer" > /dev/null
124127
npm install \
125-
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/plugins/node/opentelemetry-instrumentation-aws-lambda/opentelemetry-instrumentation-aws-lambda-*.tgz \
126-
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/plugins/node/opentelemetry-instrumentation-mongodb/opentelemetry-instrumentation-mongodb-*.tgz \
127-
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/plugins/node/opentelemetry-instrumentation-aws-sdk/opentelemetry-instrumentation-aws-sdk-*.tgz \
128+
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/packages/instrumentation-aws-lambda/opentelemetry-instrumentation-aws-lambda-*.tgz \
129+
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/packages/instrumentation-mongodb/opentelemetry-instrumentation-mongodb-*.tgz \
130+
"${OPENTELEMETRY_JS_CONTRIB_PATH}"/packages/instrumentation-aws-sdk/opentelemetry-instrumentation-aws-sdk-*.tgz \
128131
"${OPENTELEMETRY_JS_PATH}"/experimental/packages/opentelemetry-instrumentation/opentelemetry-instrumentation-*.tgz \
129132
"${IITM_PATH}"/import-in-the-middle-*.tgz \
130133
"${CWD}"/nodejs/packages/cx-wrapper/cx-wrapper-*.tgz
@@ -135,6 +138,13 @@ npm install -g copyfiles bestzip rimraf
135138

136139
# Build layer
137140
pushd "./nodejs/packages/layer" > /dev/null
138-
npm run clean && npm install
141+
npm run clean && npm install --production
142+
# Dedupe dependencies to remove duplicates and reduce size
143+
npm dedupe
144+
# Remove unnecessary files to reduce layer size
145+
find node_modules -name "*.map" -delete
146+
find node_modules -type d \( -name "test" -o -name "tests" -o -name "docs" -o -name "doc" \) -exec rm -rf {} + 2>/dev/null || true
147+
# Rebuild layer with optimized dependencies
148+
npm run clean && npm run compile
139149
ls -lah build/layer.zip
140-
popd > /dev/null
150+
popd > /dev/null

dev/build-nodejs.sh

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@
33
#
44
# The script expects the dependencies to be cloned in specific locations
55
# relative to this repository's root directory.
6+
#
7+
# If you encounter build issues, try cleaning first:
8+
# git clean -xdf nodejs
69

710
set -euo pipefail
811

912
ROOT_DIR=$(git rev-parse --show-toplevel)
1013

1114
# Expected by build_nodejs_layer.sh
12-
if [ -z "$OPENTELEMETRY_JS_CONTRIB_PATH" ]; then
15+
if [ -z "${OPENTELEMETRY_JS_CONTRIB_PATH:-}" ]; then
1316
export OPENTELEMETRY_JS_CONTRIB_PATH="$ROOT_DIR/opentelemetry-js-contrib-cx"
1417
fi
1518

16-
if [ -z "$OPENTELEMETRY_JS_PATH" ]; then
19+
if [ -z "${OPENTELEMETRY_JS_PATH:-}" ]; then
1720
export OPENTELEMETRY_JS_PATH="$ROOT_DIR/opentelemetry-js"
1821
fi
1922

20-
if [ -z "$IITM_PATH" ]; then
23+
if [ -z "${IITM_PATH:-}" ]; then
2124
export IITM_PATH="$ROOT_DIR/import-in-the-middle"
2225
fi
2326

dev/deploy-nodejs.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,20 @@ if [ -z "$LAMBDA_LAYER_PREFIX" ]; then
1313
exit 1
1414
fi
1515

16-
if [ -z "$AWS_PROFILE" ]; then
17-
echo "AWS_PROFILE is not set"
18-
exit 1
16+
if [ -z "${AWS_PROFILE:-}" ]; then
17+
export AWS_PROFILE=default
18+
echo "AWS_PROFILE not set, using default: $AWS_PROFILE"
1919
fi
2020

2121
"$ROOT_DIR/dev/build-nodejs.sh"
2222

2323
output=$(aws lambda publish-layer-version \
2424
--layer-name "$LAMBDA_LAYER_PREFIX-coralogix-opentelemetry-nodejs-wrapper-development" \
2525
--compatible-architectures x86_64 arm64 \
26-
--compatible-runtimes nodejs16.x nodejs18.x nodejs20.x \
26+
--compatible-runtimes nodejs18.x nodejs20.x nodejs22.x \
2727
--zip-file fileb://nodejs/packages/layer/build/layer.zip \
2828
--region eu-west-1 \
29-
--profile "$AWS_PROFILE")
29+
--profile "$AWS_PROFILE" \
30+
--output json)
3031
versionArn=$(echo "$output" | jq -r .LayerVersionArn)
3132
echo "$versionArn"

0 commit comments

Comments
 (0)