Skip to content

Commit 9da3153

Browse files
authored
feat: support ruby 3.4 (#118)
* update docs * update github actions * update gitlab scripts * update scripts * update integration tests * update image to be used in gitlab * update integration tests
1 parent 449bd48 commit 9da3153

21 files changed

+150
-40
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
strategy:
2929
max-parallel: 4
3030
matrix:
31-
ruby-version: [3.2, 3.3]
31+
ruby-version: [3.2, 3.3, 3.4]
3232
steps:
3333
- name: Checkout
3434
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -51,16 +51,16 @@ jobs:
5151
runs-on: ubuntu-latest
5252
strategy:
5353
matrix:
54-
runtime-param: [3.2, 3.3]
54+
runtime-param: [3.2, 3.3, 3.4]
5555

5656
steps:
5757
- name: Checkout
5858
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5959

60-
- name: Set up Node 16
60+
- name: Set up Node 20
6161
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
6262
with:
63-
node-version: 16
63+
node-version: 20
6464

6565
- name: Cache Node modules
6666
id: cache-node-modules

.gitlab/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ FROM registry.ddbuild.io/images/docker:24.0.5
33
RUN apt-get update && apt-get install -y --fix-missing --no-install-recommends \
44
curl gcc gnupg g++ make cmake unzip openssl g++ uuid-runtime xxd ca-certificates
55

6-
# Install Ruby 3.3
6+
# Install Ruby 3.4
77
RUN apt-get install ruby-full -y
88

99
# Install NodeJS 18.x

.gitlab/datasources/runtimes.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,11 @@ runtimes:
1515
ruby_version: "3.3"
1616
arch: "arm64"
1717
image: "3.3.4"
18+
- name: "ruby34"
19+
ruby_version: "3.4"
20+
arch: "amd64"
21+
image: "3.4.3"
22+
- name: "ruby34"
23+
ruby_version: "3.4"
24+
arch: "arm64"
25+
image: "3.4.3"

.gitlab/scripts/build_layer.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ set -e
99

1010
LAYER_DIR=".layers"
1111
LAYER_FILES_PREFIX="datadog-lambda_ruby"
12-
AVAILABLE_RUBY_VERSIONS=("3.2" "3.3")
12+
AVAILABLE_RUBY_VERSIONS=("3.2" "3.3" "3.4")
1313

1414
if [ -z "$ARCH" ]; then
1515
echo "[ERROR]: ARCH not specified"

.gitlab/scripts/publish_layer.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,25 @@ AWS_CLI_RUBY_VERSIONS=(
1515
"ruby3.2"
1616
"ruby3.3"
1717
"ruby3.3"
18+
"ruby3.4"
19+
"ruby3.4"
1820
)
19-
RUBY_VERSIONS=("3.2-amd64" "3.2-arm64" "3.3-amd64" "3.3-arm64")
21+
RUBY_VERSIONS=("3.2-amd64" "3.2-arm64" "3.3-amd64" "3.3-arm64" "3.4-amd64" "3.4-arm64")
2022
LAYER_PATHS=(
2123
".layers/datadog-lambda_ruby-amd64-3.2.zip"
2224
".layers/datadog-lambda_ruby-arm64-3.2.zip"
2325
".layers/datadog-lambda_ruby-amd64-3.3.zip"
2426
".layers/datadog-lambda_ruby-arm64-3.3.zip"
27+
".layers/datadog-lambda_ruby-amd64-3.4.zip"
28+
".layers/datadog-lambda_ruby-arm64-3.4.zip"
2529
)
2630
LAYERS=(
2731
"Datadog-Ruby3-2"
2832
"Datadog-Ruby3-2-ARM"
2933
"Datadog-Ruby3-3"
3034
"Datadog-Ruby3-3-ARM"
35+
"Datadog-Ruby3-4"
36+
"Datadog-Ruby3-4-ARM"
3137
)
3238
STAGES=('prod', 'sandbox', 'staging', 'gov-staging', 'gov-prod')
3339

CONTRIBUTING.md

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,33 @@
33
We love pull requests. For new features, consider opening an issue to discuss the idea first. When you're ready to open a pull requset, here's a quick guide.
44

55
1. Fork, clone and branch off:
6-
```bash
7-
git clone [email protected]:<your-username>/datadog-lambda-rb.git
8-
git checkout -b <my-branch>
9-
```
6+
```bash
7+
git clone [email protected]:<your-username>/datadog-lambda-rb.git
8+
git checkout -b <my-branch>
9+
```
1010
1. Install the repositories dependencies
11-
```bash
12-
bundle install
13-
```
11+
```bash
12+
bundle install
13+
```
1414
1. Lint and run tests
15-
```bash
16-
rubocop
17-
./scripts/run_tests.sh
18-
```
15+
```bash
16+
rubocop
17+
./scripts/run_tests.sh
18+
```
1919
1. Build a testing Lambda layer and publish it to your own AWS account.
20-
```bash
21-
# Build layers using docker
22-
./scripts/build_layers.sh
2320

24-
# If you want to build a layer for a specific ruby version then
25-
RUBY_VERSION=3.3 ./scripts/build_layers.sh
21+
```bash
22+
# Build layers using docker
23+
./scripts/build_layers.sh
24+
25+
# If you want to build a layer for a specific ruby version then
26+
RUBY_VERSION=3.4 ./scripts/build_layers.sh
27+
28+
# Publish the testing layer to your own AWS account, and the ARN will be returned
29+
# Example: ./scripts/publish_layers.sh us-east-1
30+
./scripts/publish_layers.sh <AWS_REGION>
31+
```
2632

27-
# Publish the testing layer to your own AWS account, and the ARN will be returned
28-
# Example: ./scripts/publish_layers.sh us-east-1
29-
./scripts/publish_layers.sh <AWS_REGION>
30-
```
3133
1. Test your own serverless application using the testing Lambda layer in your own AWS account.
3234
1. Run the integration tests against your own AWS account and Datadog org (or ask a Datadog member to run):
3335
```bash

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/)
66
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-rb/blob/main/LICENSE)
77

8-
Datadog Lambda Library for Ruby (3.2 and 3.3) enables enhanced Lambda metrics, distributed tracing, and custom metric submission from AWS Lambda functions.
8+
Datadog Lambda Library for Ruby (3.2, 3.3, and 3.4) enables enhanced Lambda metrics, distributed tracing, and custom metric submission from AWS Lambda functions.
99

1010
## Installation
1111

integration_tests/snapshots/logs/async-metrics_ruby33.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
1414
END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB
1515
END Duration: XXXX ms (init: XXXX) Memory Used: XXXX MB
16-
END Duration: XXXX ms Memory Used: XXXX MB
16+
END Duration: XXXX ms (init: XXXX) Memory Used: XXXX MB
1717
I, [XXXX] INFO XXXX[datadog] DATADOG CONFIGURATION - CORE - {"date":"XXXX","os_name":"XXXX","version":"2.12.0","lang":"ruby","lang_version":"3.3.X","env":null,"service":"index","dd_version":null,"debug":false,"tags":"_dd.origin:lambda","runtime_metrics_enabled":false,"vm":"ruby-3.3.X","health_metrics_enabled":false,"profiling_enabled":false,"dynamic_instrumentation_enabled":false}
1818
I, [XXXX] INFO XXXX[datadog] DATADOG CONFIGURATION - TRACING - {"enabled":true,"agent_url":null,"analytics_enabled":false,"sample_rate":null,"sampling_rules":null,"integrations_loaded":"aws@","partial_flushing_enabled":false}
1919
Processed APIGateway request
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
{"e":XXXX,"m":"aws.lambda.enhanced.invocations","t":["dd_lambda_layer:datadog-ruby34","functionname:integration-tests-rb-XXXX-async-metrics_ruby34","region:eu-west-1","account_id:XXXX","memorysize:1024","cold_start:false","runtime:Ruby 3.4.X","resource:integration-tests-rb-XXXX-async-metrics_ruby34","datadog_lambda:3.25.0","dd_trace:2.XX.X"],"v":1}
3+
{"e":XXXX,"m":"aws.lambda.enhanced.invocations","t":["dd_lambda_layer:datadog-ruby34","functionname:integration-tests-rb-XXXX-async-metrics_ruby34","region:eu-west-1","account_id:XXXX","memorysize:1024","cold_start:false","runtime:Ruby 3.4.X","resource:integration-tests-rb-XXXX-async-metrics_ruby34","datadog_lambda:3.25.0","dd_trace:2.XX.X"],"v":1}
4+
{"e":XXXX,"m":"aws.lambda.enhanced.invocations","t":["dd_lambda_layer:datadog-ruby34","functionname:integration-tests-rb-XXXX-async-metrics_ruby34","region:eu-west-1","account_id:XXXX","memorysize:1024","cold_start:true","runtime:Ruby 3.4.X","resource:integration-tests-rb-XXXX-async-metrics_ruby34","datadog_lambda:3.25.0","dd_trace:2.XX.X"],"v":1}
5+
{"e":XXXX,"m":"serverless.integration_test.execution","t":["dd_lambda_layer:datadog-ruby34","tagkey:tagvalue","eventsource:APIGateway"],"v":1}
6+
{"e":XXXX,"m":"serverless.integration_test.execution","t":["dd_lambda_layer:datadog-ruby34","tagkey:tagvalue","eventsource:SNS"],"v":1}
7+
{"e":XXXX,"m":"serverless.integration_test.execution","t":["dd_lambda_layer:datadog-ruby34","tagkey:tagvalue","eventsource:SQS"],"v":1}
8+
{"e":XXXX,"m":"serverless.integration_test.records_processed","t":["dd_lambda_layer:datadog-ruby34","tagkey:tagvalue","eventsource:SNS"],"v":1}
9+
{"e":XXXX,"m":"serverless.integration_test.records_processed","t":["dd_lambda_layer:datadog-ruby34","tagkey:tagvalue","eventsource:SQS"],"v":1}
10+
{"e":XXXX,"m":"serverless.integration_test.records_processed","t":["dd_lambda_layer:datadog-ruby34","tagkey:tagvalue","eventsource:SQS"],"v":1}
11+
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
12+
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
13+
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
14+
END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB
15+
END Duration: XXXX ms (init: XXXX) Memory Used: XXXX MB
16+
END Duration: XXXX ms (init: XXXX) Memory Used: XXXX MB
17+
I, [XXXX] INFO XXXX[datadog] DATADOG CONFIGURATION - CORE - {"date":"XXXX","os_name":"XXXX","version":"2.12.0","lang":"ruby","lang_version":"3.4.X","env":null,"service":"index","dd_version":null,"debug":false,"tags":"_dd.origin:lambda","runtime_metrics_enabled":false,"vm":"ruby-3.4.X","health_metrics_enabled":false,"profiling_enabled":false,"dynamic_instrumentation_enabled":false}
18+
I, [XXXX] INFO XXXX[datadog] DATADOG CONFIGURATION - TRACING - {"enabled":true,"agent_url":null,"analytics_enabled":false,"sample_rate":null,"sampling_rules":null,"integrations_loaded":"aws@","partial_flushing_enabled":false}
19+
Processed APIGateway request
20+
Processed SNS request
21+
Processed SQS request
22+
START
23+
START
24+
START
25+
W, [XXXX] WARN XXXX[datadog] Unable to patch Datadog::Tracing::Contrib::Aws::Integration (Available?: false, Loaded? false, Compatible? false, Patchable? false)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
{"e":XXXX,"m":"aws.lambda.enhanced.invocations","t":["dd_lambda_layer:datadog-ruby34","functionname:integration-tests-rb-XXXX-http-requests_ruby34","region:eu-west-1","account_id:XXXX","memorysize:1024","cold_start:false","runtime:Ruby 3.4.X","resource:integration-tests-rb-XXXX-http-requests_ruby34","datadog_lambda:3.25.0","dd_trace:2.XX.X"],"v":1}
3+
{"e":XXXX,"m":"aws.lambda.enhanced.invocations","t":["dd_lambda_layer:datadog-ruby34","functionname:integration-tests-rb-XXXX-http-requests_ruby34","region:eu-west-1","account_id:XXXX","memorysize:1024","cold_start:false","runtime:Ruby 3.4.X","resource:integration-tests-rb-XXXX-http-requests_ruby34","datadog_lambda:3.25.0","dd_trace:2.XX.X"],"v":1}
4+
{"e":XXXX,"m":"aws.lambda.enhanced.invocations","t":["dd_lambda_layer:datadog-ruby34","functionname:integration-tests-rb-XXXX-http-requests_ruby34","region:eu-west-1","account_id:XXXX","memorysize:1024","cold_start:true","runtime:Ruby 3.4.X","resource:integration-tests-rb-XXXX-http-requests_ruby34","datadog_lambda:3.25.0","dd_trace:2.XX.X"],"v":1}
5+
{"e":XXXX,"m":"serverless.integration_test.execution","t":["dd_lambda_layer:datadog-ruby34","function:http-request"],"v":1}
6+
{"e":XXXX,"m":"serverless.integration_test.execution","t":["dd_lambda_layer:datadog-ruby34","function:http-request"],"v":1}
7+
{"e":XXXX,"m":"serverless.integration_test.execution","t":["dd_lambda_layer:datadog-ruby34","function:http-request"],"v":1}
8+
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
9+
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
10+
{"traces":[[{"error":0,"meta":{"XXXX": "XXXX"},"metrics":{"XXXX": "XXXX"},"name":"aws.lambda","parent_id":"XXXX","resource":"dd-tracer-serverless-span","service":"aws.lambda","span_id":"XXXX","trace_id":"XXXX","type":"serverless","span_links":[],"start":XXXX,"duration":XXXX}]]}
11+
END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB
12+
END Duration: XXXX ms (init: XXXX) Memory Used: XXXX MB
13+
END Duration: XXXX ms (init: XXXX) Memory Used: XXXX MB
14+
I, [XXXX] INFO XXXX[datadog] DATADOG CONFIGURATION - CORE - {"date":"XXXX","os_name":"XXXX","version":"2.12.0","lang":"ruby","lang_version":"3.4.X","env":null,"service":"index","dd_version":null,"debug":false,"tags":"_dd.origin:lambda","runtime_metrics_enabled":false,"vm":"ruby-3.4.X","health_metrics_enabled":false,"profiling_enabled":false,"dynamic_instrumentation_enabled":false}
15+
I, [XXXX] INFO XXXX[datadog] DATADOG CONFIGURATION - TRACING - {"enabled":true,"agent_url":null,"analytics_enabled":false,"sample_rate":null,"sampling_rules":null,"integrations_loaded":"aws@","partial_flushing_enabled":false}
16+
Snapshot test http requests successfully made to URLs: ["ip-ranges.datadoghq.com", "ip-ranges.datadoghq.eu"]
17+
Snapshot test http requests successfully made to URLs: ["ip-ranges.datadoghq.com", "ip-ranges.datadoghq.eu"]
18+
Snapshot test http requests successfully made to URLs: ["ip-ranges.datadoghq.com", "ip-ranges.datadoghq.eu"]
19+
START
20+
START
21+
START
22+
W, [XXXX] WARN XXXX[datadog] Unable to patch Datadog::Tracing::Contrib::Aws::Integration (Available?: false, Loaded? false, Compatible? false, Patchable? false)

0 commit comments

Comments
 (0)