Skip to content

Commit 8305c86

Browse files
committed
fix: WPB-25755 update changelog verification fot releases
1 parent 79ab4e0 commit 8305c86

1 file changed

Lines changed: 29 additions & 10 deletions

File tree

.github/workflows/changelog-verify.yml

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,28 @@ jobs:
2626
BASE_SHA=${{ github.event.pull_request.base.sha }}
2727
HEAD_SHA=${{ github.event.pull_request.head.sha }}
2828
29-
# Use 3-dot syntax so we only see changes introduced by this PR
30-
CHANGED_FILES=$(git diff --name-only "$BASE_SHA...$HEAD_SHA" -- changelog.d/ | grep -vE "^$" || true)
29+
# Use 3-dot syntax so we only see changes introduced by this PR
30+
CHANGED_FILES=$(git diff --name-status "$BASE_SHA...$HEAD_SHA" -- changelog.d/ | awk '$1 ~ /^[AM]/ {print $2}' || true)
31+
DELETED_FILES=$(git diff --name-status "$BASE_SHA...$HEAD_SHA" -- changelog.d/ | awk '$1 ~ /^D/ {print $2}' || true)
32+
CHANGELOG_MODIFIED=$(git diff --name-only "$BASE_SHA...$HEAD_SHA" -- CHANGELOG.md | grep -vE "^$" || true)
3133
else
3234
# For push events, compare with the previous commit
3335
HEAD_SHA=${{ github.sha }}
3436
BASE_SHA=$(git rev-parse HEAD~1)
35-
CHANGED_FILES=$(git diff --name-only "$BASE_SHA" "$HEAD_SHA" -- changelog.d/ | grep -vE "^$" || true)
37+
CHANGED_FILES=$(git diff --name-status "$BASE_SHA" "$HEAD_SHA" -- changelog.d/ | awk '$1 ~ /^[AM]/ {print $2}' || true)
38+
DELETED_FILES=$(git diff --name-status "$BASE_SHA" "$HEAD_SHA" -- changelog.d/ | awk '$1 ~ /^D/ {print $2}' || true)
39+
CHANGELOG_MODIFIED=$(git diff --name-only "$BASE_SHA" "$HEAD_SHA" -- CHANGELOG.md | grep -vE "^$" || true)
3640
fi
3741
3842
echo "BASE_SHA: $BASE_SHA"
3943
echo "HEAD_SHA: $HEAD_SHA"
44+
echo "CHANGELOG_MODIFIED: ${CHANGELOG_MODIFIED:-false}"
4045
echo "CHANGED_FILES:"
4146
echo "$CHANGED_FILES"
47+
if [ -n "$DELETED_FILES" ]; then
48+
echo "DELETED_CHANGELOG_FILES:"
49+
echo "$DELETED_FILES"
50+
fi
4251
4352
# Check if commit is by zebot with wire-build update message
4453
COMMIT_AUTHOR=$(git log --format="%an" -1 $HEAD_SHA)
@@ -51,16 +60,26 @@ jobs:
5160
exit 0
5261
fi
5362
54-
if [ -z "$CHANGED_FILES" ]; then
55-
echo "No files changed in changelog.d/ for this ${GITHUB_EVENT_NAME:-event}."
56-
echo "Every PR must add or modify at least one changelog.d/ entry."
57-
exit 1
58-
fi
59-
6063
PATTERN='^(Added|Changed|Deprecated|Removed|Fixed|Security): .+'
6164
LINE_FOUND=false
65+
ALLOW_RELEASE_CLEANUP=false
66+
67+
if [ -z "$CHANGED_FILES" ]; then
68+
if [ -n "$DELETED_FILES" ] && [ -n "$CHANGELOG_MODIFIED" ]; then
69+
echo "No new or modified changelog.d/ entries found, but CHANGELOG.md changed, so this release cleanup is allowed."
70+
ALLOW_RELEASE_CLEANUP=true
71+
else
72+
echo "No files changed in changelog.d/ for this ${GITHUB_EVENT_NAME:-event}."
73+
echo "Every PR must add or modify at least one changelog.d/ entry."
74+
exit 1
75+
fi
76+
fi
6277
6378
for file in $CHANGED_FILES; do
79+
if [ ! -f "$file" ]; then
80+
echo "Skipping missing changelog file: $file"
81+
continue
82+
fi
6483
while IFS= read -r line; do
6584
if [[ -z "$line" ]]; then
6685
continue
@@ -75,7 +94,7 @@ jobs:
7594
done < "$file"
7695
done
7796
78-
if [ "$LINE_FOUND" = false ]; then
97+
if [ "$LINE_FOUND" = false ] && [ "$ALLOW_RELEASE_CLEANUP" = false ]; then
7998
echo "No valid lines found in changelog.d/ files. Ensure there is a newline at the end of files."
8099
echo "Please read more policies about changelog at https://keepachangelog.com/en/1.1.0"
81100
exit 1

0 commit comments

Comments
 (0)