From b30f1e87ada697b1e88772d9608685132ca1b163 Mon Sep 17 00:00:00 2001 From: David Han Date: Mon, 26 Jan 2026 10:02:21 -0500 Subject: [PATCH 1/7] Update release script to add version information to bucket --- aws/logs_monitoring/release.sh | 65 ++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index d82421587..d68b73a10 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -125,6 +125,8 @@ CURRENT_VERSION=$(yq '.Mappings.Constants.DdForwarder.Version' "template.yaml") LAYER_NAME="Datadog-Forwarder" BUNDLE_PATH=".forwarder/aws-dd-forwarder-${FORWARDER_VERSION}.zip" +VERSIONS_JSON_PATH=".forwarder/versions.json" +VERSIONS_BUCKET="datadog-opensource-asset-versions" aws_login() { cfg=("$@") @@ -152,6 +154,65 @@ get_max_layer_version() { fi } +generate_versions_json() { + log_info "Generating versions.json from GitHub release data..." + + local releases_json + releases_json=$(gh release list --repo DataDog/datadog-serverless-functions --limit 200 --json tagName,name,publishedAt) + + local versions_json + versions_json=$(echo "${releases_json}" | jq -r ' + [ + .[] | + select(.tagName | startswith("aws-dd-forwarder-")) | + + # Extract forwarder version from tag (e.g., aws-dd-forwarder-5.1.0 -> 5.1.0) + (.tagName | capture("aws-dd-forwarder-(?[0-9]+\\.[0-9]+\\.[0-9]+)")) as $forwarder | + + # Extract layer version from name (e.g., "aws-dd-forwarder-5.1.0 (Layer v92)" -> 92) + (.name | capture("\\(Layer v(?[0-9]+)\\)")) as $layer | + + # Only include if both extractions succeeded + select($forwarder != null and $layer != null) | + + { + layer_version: $layer.layer, + forwarder_version: $forwarder.version, + release_date: (.publishedAt | split("T")[0]) + } + ] | + + sort_by(.layer_version | tonumber) | reverse | + + { + latest: { + layer_version: .[0].layer_version, + forwarder_version: .[0].forwarder_version, + release_date: .[0].release_date + }, + mappings: ( + reduce .[] as $item ( + {}; + . + {($item.layer_version): $item.forwarder_version} + ) + ) + } + ') + + # Write to file + echo "${versions_json}" > "${VERSIONS_JSON_PATH}" + log_success "Generated ${VERSIONS_JSON_PATH}" +} + +upload_versions_json() { + log_info "Uploading versions.json to s3://${VERSIONS_BUCKET}/forwarder/versions.json..." + + aws_login aws s3 cp "${VERSIONS_JSON_PATH}" "s3://${VERSIONS_BUCKET}/forwarder/versions.json" \ + --grants "read=uri=http://acs.amazonaws.com/groups/global/AllUsers" + + log_success "Uploaded versions.json to S3!" +} + datadog_release() { if ! user_confirm "Did you update the DdForwarder version and Layer in the template.yaml file before releasing"; then log_error "Please update the Forwarder version in the template.yaml file" @@ -328,4 +389,8 @@ log_success "Forwarder release process complete!" if [[ ${ACCOUNT} == "prod" ]]; then log_info "Don't forget to add release notes in GitHub!" log_info "\thttps://github.com/DataDog/datadog-serverless-functions/releases" + + # Generate and upload versions.json for Terraform module consumption + generate_versions_json + upload_versions_json fi From 87ff06a5c13ac65d74395ee90ae4c866e7d49e16 Mon Sep 17 00:00:00 2001 From: David Han Date: Mon, 26 Jan 2026 10:13:39 -0500 Subject: [PATCH 2/7] Only generate versions for prod --- aws/logs_monitoring/release.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index d68b73a10..ee11bf110 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -390,7 +390,6 @@ if [[ ${ACCOUNT} == "prod" ]]; then log_info "Don't forget to add release notes in GitHub!" log_info "\thttps://github.com/DataDog/datadog-serverless-functions/releases" - # Generate and upload versions.json for Terraform module consumption generate_versions_json upload_versions_json fi From 39db404759a353e7fd10e9c36a0927df66cd8161 Mon Sep 17 00:00:00 2001 From: David Han Date: Mon, 26 Jan 2026 11:58:43 -0500 Subject: [PATCH 3/7] Finish testing and only upload for prod --- aws/logs_monitoring/release.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index ee11bf110..bec2582ff 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -363,6 +363,15 @@ else sandbox_release fi +if [[ ${ACCOUNT} == "prod" ]]; then + log_info "Generating and uploading versions.json" + + generate_versions_json + upload_versions_json + + log_success "Done generating and uploading versions.json!" +fi + log_info "Uploading template.yaml to s3://${BUCKET}/aws/forwarder/${FORWARDER_VERSION}.yaml" if [[ ${ACCOUNT} == "prod" ]]; then @@ -389,7 +398,4 @@ log_success "Forwarder release process complete!" if [[ ${ACCOUNT} == "prod" ]]; then log_info "Don't forget to add release notes in GitHub!" log_info "\thttps://github.com/DataDog/datadog-serverless-functions/releases" - - generate_versions_json - upload_versions_json fi From 05b9eca1b69ebd52fd037be22d10186cfdb3dde6 Mon Sep 17 00:00:00 2001 From: David Han Date: Mon, 26 Jan 2026 12:05:48 -0500 Subject: [PATCH 4/7] Remove comments --- aws/logs_monitoring/release.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index bec2582ff..434f92ad3 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -199,7 +199,6 @@ generate_versions_json() { } ') - # Write to file echo "${versions_json}" > "${VERSIONS_JSON_PATH}" log_success "Generated ${VERSIONS_JSON_PATH}" } From d805f95921f063fcf35b54e46516161eecf44edd Mon Sep 17 00:00:00 2001 From: David Han Date: Mon, 26 Jan 2026 14:43:35 -0500 Subject: [PATCH 5/7] Make version after forwarder release --- aws/logs_monitoring/release.sh | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index 434f92ad3..6baddc958 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -362,15 +362,6 @@ else sandbox_release fi -if [[ ${ACCOUNT} == "prod" ]]; then - log_info "Generating and uploading versions.json" - - generate_versions_json - upload_versions_json - - log_success "Done generating and uploading versions.json!" -fi - log_info "Uploading template.yaml to s3://${BUCKET}/aws/forwarder/${FORWARDER_VERSION}.yaml" if [[ ${ACCOUNT} == "prod" ]]; then @@ -395,6 +386,13 @@ log_success "" log_success "Forwarder release process complete!" if [[ ${ACCOUNT} == "prod" ]]; then + log_info "Generating and uploading versions.json for the new release..." + + generate_versions_json + upload_versions_json + + log_success "Done generating and uploading versions.json!" + log_info "Don't forget to add release notes in GitHub!" log_info "\thttps://github.com/DataDog/datadog-serverless-functions/releases" fi From e858059bd2c15bdf09b5ac797ebdccc9ad0034c3 Mon Sep 17 00:00:00 2001 From: Katie McKew Date: Mon, 26 Jan 2026 17:16:55 -0500 Subject: [PATCH 6/7] fix: remove unnecessary acl and account for multiple releases with same layer --- aws/logs_monitoring/release.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index 6baddc958..54e369301 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -178,10 +178,19 @@ generate_versions_json() { { layer_version: $layer.layer, forwarder_version: $forwarder.version, - release_date: (.publishedAt | split("T")[0]) + release_date: (.publishedAt | split("T")[0]), + published_at: .publishedAt } ] | + # Group by layer_version and keep only the most recent forwarder version for each layer + group_by(.layer_version) | + map({ + layer_version: .[0].layer_version, + forwarder_version: (sort_by(.published_at) | reverse | .[0].forwarder_version), + release_date: (sort_by(.published_at) | reverse | .[0].release_date) + }) | + sort_by(.layer_version | tonumber) | reverse | { @@ -206,8 +215,7 @@ generate_versions_json() { upload_versions_json() { log_info "Uploading versions.json to s3://${VERSIONS_BUCKET}/forwarder/versions.json..." - aws_login aws s3 cp "${VERSIONS_JSON_PATH}" "s3://${VERSIONS_BUCKET}/forwarder/versions.json" \ - --grants "read=uri=http://acs.amazonaws.com/groups/global/AllUsers" + aws_login aws s3 cp "${VERSIONS_JSON_PATH}" "s3://${VERSIONS_BUCKET}/forwarder/versions.json" log_success "Uploaded versions.json to S3!" } @@ -387,12 +395,12 @@ log_success "Forwarder release process complete!" if [[ ${ACCOUNT} == "prod" ]]; then log_info "Generating and uploading versions.json for the new release..." - + generate_versions_json upload_versions_json log_success "Done generating and uploading versions.json!" - + log_info "Don't forget to add release notes in GitHub!" log_info "\thttps://github.com/DataDog/datadog-serverless-functions/releases" fi From 1703fb16866558a9358bab1e669e1ca569c38a3e Mon Sep 17 00:00:00 2001 From: Katie McKew Date: Tue, 27 Jan 2026 16:23:44 -0500 Subject: [PATCH 7/7] feat: add log prompt to verify versions file --- aws/logs_monitoring/release.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aws/logs_monitoring/release.sh b/aws/logs_monitoring/release.sh index 54e369301..37a686a62 100755 --- a/aws/logs_monitoring/release.sh +++ b/aws/logs_monitoring/release.sh @@ -400,6 +400,8 @@ if [[ ${ACCOUNT} == "prod" ]]; then upload_versions_json log_success "Done generating and uploading versions.json!" + log_info "Please verify the uploaded file:" + log_info "\thttps://${VERSIONS_BUCKET}.s3.amazonaws.com/forwarder/versions.json" log_info "Don't forget to add release notes in GitHub!" log_info "\thttps://github.com/DataDog/datadog-serverless-functions/releases"