Enhance release message generation in CI workflow
All checks were successful
Build and Publish Docker Image / Build and Validate (pull_request) Successful in 8s
Build and Publish Docker Image / Publish to Registry (pull_request) Has been skipped

- Improved handling of the {{COMMITS}} placeholder to support multi-line content.
- Introduced a while loop for safe replacement of multi-line commit messages.
- Added temporary files for intermediate processing to ensure accurate output.

This change ensures that release notes are generated correctly, even when multiple commits are included.
This commit is contained in:
Juan Sebastián Montoya 2025-11-26 12:10:44 -05:00
parent 171be2ef17
commit cd95a68445

View file

@ -131,14 +131,32 @@ jobs:
fi fi
# Replace placeholders in template # Replace placeholders in template
# Handle COMMITS separately due to multi-line content that can break sed
# First, replace all single-line placeholders
sed -e "s|{{VERSION}}|$VERSION|g" \ sed -e "s|{{VERSION}}|$VERSION|g" \
-e "s|{{IMAGE_NAME}}|$IMAGE_NAME|g" \ -e "s|{{IMAGE_NAME}}|$IMAGE_NAME|g" \
-e "s|{{COMMIT_HASH}}|$COMMIT_HASH|g" \ -e "s|{{COMMIT_HASH}}|$COMMIT_HASH|g" \
-e "s|{{COMMIT_SHORT}}|$COMMIT_SHORT|g" \ -e "s|{{COMMIT_SHORT}}|$COMMIT_SHORT|g" \
-e "s|{{BUILD_DATE}}|$BUILD_DATE|g" \ -e "s|{{BUILD_DATE}}|$BUILD_DATE|g" \
-e "s|{{COMMIT_AUTHOR}}|$COMMIT_AUTHOR|g" \ -e "s|{{COMMIT_AUTHOR}}|$COMMIT_AUTHOR|g" \
-e "s|{{COMMITS}}|$COMMITS|g" \ "$TEMPLATE_FILE" > /tmp/release_message_temp.txt
"$TEMPLATE_FILE" > /tmp/release_message.txt
# Replace COMMITS placeholder - use a while loop to handle multi-line safely
if [[ -n "$COMMITS" ]]; then
# Write COMMITS to a temp file and use it for replacement
echo "$COMMITS" > /tmp/commits.txt
# Use a simple approach: read template line by line and replace
while IFS= read -r line; do
if [[ "$line" == *"{{COMMITS}}"* ]]; then
cat /tmp/commits.txt
else
echo "$line"
fi
done < /tmp/release_message_temp.txt > /tmp/release_message.txt
else
# If no commits, just remove the placeholder
sed 's|{{COMMITS}}||g' /tmp/release_message_temp.txt > /tmp/release_message.txt
fi
echo "Release notes generated from template" echo "Release notes generated from template"