Skip to content

Commit 3860736

Browse files
dhan0779ktmq
andauthored
[AWSCORE-688] Add version fetching to forwarder release script (#1053)
* Update release script to add version information to bucket * Only generate versions for prod * Finish testing and only upload for prod * Remove comments * Make version after forwarder release * fix: remove unnecessary acl and account for multiple releases with same layer * feat: add log prompt to verify versions file --------- Co-authored-by: Katie McKew <katie.mckew@datadoghq.com>
1 parent ad0e7fa commit 3860736

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

aws/logs_monitoring/release.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ CURRENT_VERSION=$(yq '.Mappings.Constants.DdForwarder.Version' "template.yaml")
125125

126126
LAYER_NAME="Datadog-Forwarder"
127127
BUNDLE_PATH=".forwarder/aws-dd-forwarder-${FORWARDER_VERSION}.zip"
128+
VERSIONS_JSON_PATH=".forwarder/versions.json"
129+
VERSIONS_BUCKET="datadog-opensource-asset-versions"
128130

129131
aws_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+
155223
datadog_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 ""
326394
log_success "Forwarder release process complete!"
327395

328396
if [[ ${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"
331408
fi

0 commit comments

Comments
 (0)