Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
ARG image
FROM $image AS builder
ARG image
ARG dd_trace_package

# Create the directory structure required for AWS Lambda Layer
RUN mkdir -p /nodejs/node_modules/

# Install dev dependencies
COPY . datadog-lambda-js
WORKDIR /datadog-lambda-js
RUN if [ -n "$dd_trace_package" ]; then \
node -e 'const fs = require("fs"); const pkg = JSON.parse(fs.readFileSync("package.json", "utf8")); const spec = process.argv[1]; if (pkg.devDependencies && pkg.devDependencies["dd-trace"]) { pkg.devDependencies["dd-trace"] = spec; } else { pkg.dependencies = pkg.dependencies || {}; pkg.dependencies["dd-trace"] = spec; } fs.writeFileSync("package.json", JSON.stringify(pkg, null, 2) + "\n");' "$dd_trace_package"; \
fi
RUN yarn install

# Build the lambda layer
Expand Down
34 changes: 33 additions & 1 deletion scripts/build_layers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,21 @@
# Copyright 2019 Datadog, Inc.

# Builds Datadog node layers for lambda functions, using Docker
#
# Usage:
# NODE_VERSION=20.19 ./scripts/build_layers.sh
#
# dd-trace-js overrides (highest priority first):
# DD_TRACE_PACKAGE Exact package spec to use for dd-trace.
# DD_TRACE_COMMIT Specific dd-trace-js commit SHA to build from GitHub.
# DD_TRACE_COMMIT_BRANCH dd-trace-js branch name to build from GitHub.
#
# Examples:
# # Build a single layer for Node 20
# NODE_VERSION=20.19 ./scripts/build_layers.sh
#
# # Build a single layer with dd-trace from a branch
# DD_TRACE_COMMIT_BRANCH=joey/cross-invocation-tracecontext-propagation NODE_VERSION=20.19 ./scripts/build_layers.sh
set -e

LAYER_DIR=".layers"
Expand All @@ -27,6 +42,21 @@ else
fi
fi

function resolve_dd_trace_package {
if [ -n "$DD_TRACE_PACKAGE" ]; then
echo "$DD_TRACE_PACKAGE"
elif [ -n "$DD_TRACE_COMMIT" ]; then
echo "git+https://github.com/DataDog/dd-trace-js.git#$DD_TRACE_COMMIT"
elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then
echo "git+https://github.com/DataDog/dd-trace-js.git#$DD_TRACE_COMMIT_BRANCH"
fi
}

DD_TRACE_PACKAGE_SPEC=$(resolve_dd_trace_package)
if [ -n "$DD_TRACE_PACKAGE_SPEC" ]; then
echo "Using dd-trace package spec: $DD_TRACE_PACKAGE_SPEC"
fi

function make_path_absolute {
echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")"
}
Expand All @@ -40,7 +70,9 @@ function docker_build_zip {
# between different node runtimes.
temp_dir=$(mktemp -d)
docker buildx build -t datadog-lambda-layer-node:$1 . --no-cache \
--build-arg image=registry.ddbuild.io/images/mirror/node:${node_image_version}-bullseye --progress=plain -o $temp_dir/nodejs
--build-arg image=registry.ddbuild.io/images/mirror/node:${node_image_version}-bullseye \
--build-arg dd_trace_package="$DD_TRACE_PACKAGE_SPEC" \
--progress=plain -o $temp_dir/nodejs

# Zip to destination, and keep directory structure as based in $temp_dir
(cd $temp_dir && zip -q -r $destination ./)
Expand Down
22 changes: 13 additions & 9 deletions scripts/publish_layers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,6 @@ if [[ ${#LAYER_PATHS[@]} -ne $expected_length ]] || \
exit 1
fi

# Check that the layer files exist
for layer_file in "${LAYER_PATHS[@]}"
do
if [ ! -f $layer_file ]; then
echo "Could not find $layer_file."
exit 1
fi
done

# Determine the target regions
if [ -z "$REGIONS" ]; then
echo "Region not specified, running for all available regions."
Expand Down Expand Up @@ -78,6 +69,19 @@ else
echo "Layer version specified: $VERSION"
fi

# Check that the layer files exist for the layers we'll actually publish
for layer_name in "${LAYERS[@]}"; do
for i in "${!AVAILABLE_LAYERS[@]}"; do
if [[ "${AVAILABLE_LAYERS[$i]}" = "${layer_name}" ]]; then
layer_file="${LAYER_PATHS[$i]}"
if [ ! -f "$layer_file" ]; then
echo "Could not find $layer_file."
exit 1
fi
fi
done
done

read -p "Ready to publish version $VERSION of layers ${LAYERS[*]} to regions ${REGIONS[*]} (y/n)?" CONT
if [ "$CONT" != "y" ]; then
echo "Exiting"
Expand Down
Loading