@@ -125,6 +125,8 @@ CURRENT_VERSION=$(yq '.Mappings.Constants.DdForwarder.Version' "template.yaml")
125125
126126LAYER_NAME=" Datadog-Forwarder"
127127BUNDLE_PATH=" .forwarder/aws-dd-forwarder-${FORWARDER_VERSION} .zip"
128+ VERSIONS_JSON_PATH=" .forwarder/versions.json"
129+ VERSIONS_BUCKET=" datadog-opensource-asset-versions"
128130
129131aws_login () {
130132 cfg=(" $@ " )
@@ -152,6 +154,72 @@ get_max_layer_version() {
152154 fi
153155}
154156
157+ generate_versions_json () {
158+ log_info " Generating versions.json from GitHub release data..."
159+
160+ local releases_json
161+ releases_json=$( gh release list --repo DataDog/datadog-serverless-functions --limit 200 --json tagName,name,publishedAt)
162+
163+ local versions_json
164+ versions_json=$( echo " ${releases_json} " | jq -r '
165+ [
166+ .[] |
167+ select(.tagName | startswith("aws-dd-forwarder-")) |
168+
169+ # Extract forwarder version from tag (e.g., aws-dd-forwarder-5.1.0 -> 5.1.0)
170+ (.tagName | capture("aws-dd-forwarder-(?<version>[0-9]+\\.[0-9]+\\.[0-9]+)")) as $forwarder |
171+
172+ # Extract layer version from name (e.g., "aws-dd-forwarder-5.1.0 (Layer v92)" -> 92)
173+ (.name | capture("\\(Layer v(?<layer>[0-9]+)\\)")) as $layer |
174+
175+ # Only include if both extractions succeeded
176+ select($forwarder != null and $layer != null) |
177+
178+ {
179+ layer_version: $layer.layer,
180+ forwarder_version: $forwarder.version,
181+ release_date: (.publishedAt | split("T")[0]),
182+ published_at: .publishedAt
183+ }
184+ ] |
185+
186+ # Group by layer_version and keep only the most recent forwarder version for each layer
187+ group_by(.layer_version) |
188+ map({
189+ layer_version: .[0].layer_version,
190+ forwarder_version: (sort_by(.published_at) | reverse | .[0].forwarder_version),
191+ release_date: (sort_by(.published_at) | reverse | .[0].release_date)
192+ }) |
193+
194+ sort_by(.layer_version | tonumber) | reverse |
195+
196+ {
197+ latest: {
198+ layer_version: .[0].layer_version,
199+ forwarder_version: .[0].forwarder_version,
200+ release_date: .[0].release_date
201+ },
202+ mappings: (
203+ reduce .[] as $item (
204+ {};
205+ . + {($item.layer_version): $item.forwarder_version}
206+ )
207+ )
208+ }
209+ ' )
210+
211+ echo " ${versions_json} " > " ${VERSIONS_JSON_PATH} "
212+ log_success " Generated ${VERSIONS_JSON_PATH} "
213+ }
214+
215+ upload_versions_json () {
216+ log_info " Uploading versions.json to s3://${VERSIONS_BUCKET} /forwarder/versions.json..."
217+
218+ aws_login aws s3 cp " ${VERSIONS_JSON_PATH} " " s3://${VERSIONS_BUCKET} /forwarder/versions.json"
219+
220+ log_success " Uploaded versions.json to S3!"
221+ }
222+
155223datadog_release () {
156224 if ! user_confirm " Did you update the DdForwarder version and Layer in the template.yaml file before releasing" ; then
157225 log_error " Please update the Forwarder version in the template.yaml file"
@@ -326,6 +394,15 @@ log_success ""
326394log_success " Forwarder release process complete!"
327395
328396if [[ ${ACCOUNT} == " prod" ]]; then
397+ log_info " Generating and uploading versions.json for the new release..."
398+
399+ generate_versions_json
400+ upload_versions_json
401+
402+ log_success " Done generating and uploading versions.json!"
403+ log_info " Please verify the uploaded file:"
404+ log_info " \thttps://${VERSIONS_BUCKET} .s3.amazonaws.com/forwarder/versions.json"
405+
329406 log_info " Don't forget to add release notes in GitHub!"
330407 log_info " \thttps://github.com/DataDog/datadog-serverless-functions/releases"
331408fi
0 commit comments