-
Notifications
You must be signed in to change notification settings - Fork 847
52 lines (52 loc) · 2 KB
/
changelog-check.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
name: Check CHANGELOG.md updated
"on":
pull_request:
types: [opened, synchronize, reopened, edited]
# It's important to check that the changelog is updated with bug fixes that
# we backport to the release branches, so these branches are included as
# well.
branches: [main, "[0-9]+.[0-9]+.x"]
jobs:
# Check that the CHANGELOG is updated by the pull request. This can be
# disabled by adding a trailer line of the following form to the
# pull request message:
#
# Disable-Check: force-changelog-changed
#
# The check is case-insensitive and ignores other contents on the
# line as well, so it is possible to add several different checks if
# that is necessary.
#
# It is assumed that the trailer is following RFC2822 conventions,
# but this is currently not enforced.
check_changelog_update:
name: Check for CHANGELOG.md changes
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Check CHANGELOG.md updated by pull request
shell: bash --norc --noprofile {0}
run: |
diff=$(git diff --name-status origin/main | grep "CHANGELOG.md")
cat << "EOF" | egrep -qsi '^disable-check:.*\<force-changelog-changed\>'
${{ github.event.pull_request.body }}
EOF
if [[ $? -ne 0 ]]; then
if [[ $diff == '' ]]; then
echo
echo "CHANGELOG.md not updated by pull request"
echo
echo "To disable changelog updated check, add this trailer to pull request message:"
echo
echo "Disable-check: force-changelog-changed"
echo
echo "Trailers follow RFC2822 conventions, so no whitespace"
echo "before field name and the check is case-insensitive for"
echo "both the field name and the field body."
exit 1
fi
fi