From cd95a6844524177a91c8b91fbae0dda783cf0ce8 Mon Sep 17 00:00:00 2001 From: Juan Sebastian Montoya Date: Wed, 26 Nov 2025 12:10:44 -0500 Subject: [PATCH] Enhance release message generation in CI workflow - 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. --- .forgejo/workflows/ci.yaml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 6d60f54..05d4970 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -131,14 +131,32 @@ jobs: fi # 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" \ -e "s|{{IMAGE_NAME}}|$IMAGE_NAME|g" \ -e "s|{{COMMIT_HASH}}|$COMMIT_HASH|g" \ -e "s|{{COMMIT_SHORT}}|$COMMIT_SHORT|g" \ -e "s|{{BUILD_DATE}}|$BUILD_DATE|g" \ -e "s|{{COMMIT_AUTHOR}}|$COMMIT_AUTHOR|g" \ - -e "s|{{COMMITS}}|$COMMITS|g" \ - "$TEMPLATE_FILE" > /tmp/release_message.txt + "$TEMPLATE_FILE" > /tmp/release_message_temp.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" -- 2.49.1