Skip to content

Commit 160356b

Browse files
committed
changelog.yaml
1 parent 6282c6f commit 160356b

File tree

1 file changed

+29
-39
lines changed

1 file changed

+29
-39
lines changed
Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,47 @@
1-
name: "Verify CHANGELOG Update"
1+
# This action requires that any PR targeting the main branch should touch at
2+
# least one CHANGELOG file. If a CHANGELOG entry is not required, add the
3+
# "Skip Changelog" label, the "dependencies" label, or include "[chore]" in
4+
# the PR title.
5+
6+
name: changelog
27

38
on:
49
pull_request:
510
types: [opened, synchronize, reopened, labeled, unlabeled]
11+
branches:
12+
- main
13+
14+
permissions: read-all
615

716
jobs:
8-
check-changelog:
17+
changelog:
918
runs-on: ubuntu-latest
10-
name: Enforce CHANGELOG updates
19+
20+
# Skip if:
21+
# - PR has "Skip Changelog" label
22+
# - PR has "dependencies" label
23+
# - PR title contains "[chore]"
24+
if: >
25+
! contains(github.event.pull_request.labels.*.name, 'Skip Changelog') &&
26+
! contains(github.event.pull_request.labels.*.name, 'dependencies') &&
27+
! contains(github.event.pull_request.title, '[chore]')
1128
1229
steps:
13-
- name: Checkout full history
30+
- name: Checkout repository
1431
uses: actions/checkout@v4
1532
with:
1633
fetch-depth: 0
1734

18-
- name: Get changed files
19-
id: diff
35+
- name: Verify CHANGELOG updated
2036
run: |
37+
echo "Fetching base branch..."
2138
git fetch origin ${{ github.base_ref }} --depth=1
22-
echo "changed_files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)" >> $GITHUB_OUTPUT
2339
24-
- name: Detect skip labels
25-
id: skip
26-
run: |
27-
labels="${{ toJson(github.event.pull_request.labels) }}"
28-
echo "Labels on PR: $labels"
29-
30-
if echo "$labels" | grep -q '"Skip Changelog"'; then
31-
echo "skip=true" >> $GITHUB_OUTPUT
32-
elif echo "$labels" | grep -q '"dependencies"'; then
33-
echo "skip=true" >> $GITHUB_OUTPUT
40+
echo "Checking for CHANGELOG modifications..."
41+
if git diff --name-only FETCH_HEAD | grep -q 'CHANGELOG'; then
42+
echo "CHANGELOG updated — OK"
3443
else
35-
echo "skip=false" >> $GITHUB_OUTPUT
36-
fi
37-
38-
- name: Skip changelog check
39-
if: steps.skip.outputs.skip == 'true'
40-
run: echo "Skip Changelog or dependencies label detected — skipping check."
41-
42-
- name: Enforce CHANGELOG.md update
43-
if: steps.skip.outputs.skip == 'false'
44-
run: |
45-
changed_files="${{ steps.diff.outputs.changed_files }}"
46-
47-
echo "Changed files:"
48-
echo "$changed_files"
49-
50-
# If other files changed but CHANGELOG.md did NOT change → FAIL
51-
if ! echo "$changed_files" | grep -q '^CHANGELOG\.md'; then
52-
echo "::error::This PR changes repository files but does NOT update CHANGELOG.md."
53-
echo "Please update CHANGELOG.md or add the 'Skip Changelog' label for valid exceptions."
44+
echo "::error::No CHANGELOG file was updated in this PR."
45+
echo "Please update CHANGELOG or use the 'Skip Changelog' label if appropriate."
5446
exit 1
55-
fi
56-
57-
echo "CHANGELOG updated — OK"
47+
fi

0 commit comments

Comments
 (0)