11name : ' Changelog Check'
22description : ' Check if changelog is updated for the changed packages'
33inputs :
4- github_token :
5- description : ' GitHub token'
6- required : true
74 pr_number :
85 description : ' Pull request number'
96 required : true
@@ -16,39 +13,26 @@ runs:
1613 with :
1714 fetch-depth : 0 # Fetch full history to access all commits
1815
19- - name : Get Base Branch SHA
20- id : get_base_sha
16+ - name : Determine Base SHA and Merge Base
17+ id : determine_base
2118 run : |
22- if [ -n "${{ inputs.pr_number }}" ]; then
23- BASE_SHA=$(curl -s -H "Authorization: token ${{ inputs.github_token }}" \
24- "https://api.github.com/repos/${{ github.repository }}/pulls/${{ inputs.pr_number }}" | \
25- jq -r '.base.sha')
19+ if [ -n "${{ github.event.pull_request.base.sha }}" ]; then
20+ BASE_SHA="${{ github.event.pull_request.base.sha }}"
21+ MERGE_BASE=$(git merge-base $BASE_SHA ${{ github.sha }})
22+ echo "BASE_SHA=$BASE_SHA" >> $GITHUB_ENV
23+ echo "MERGE_BASE=$MERGE_BASE" >> $GITHUB_ENV
2624 else
27- echo "Not running in a PR context. Skipping changelog check."
28- echo "SKIP_CHANGELOG_CHECK=true" >> $GITHUB_ENV
29- fi
30-
31- if [ -z "$BASE_SHA" ] || [ "$BASE_SHA" == "null" ]; then
32- echo "Unable to fetch base SHA or no base SHA available. Skipping changelog check."
25+ echo "Not running in a PR context or unable to determine base SHA. Skipping changelog check."
3326 echo "SKIP_CHANGELOG_CHECK=true" >> $GITHUB_ENV
34- else
35- echo "BASE_SHA=${BASE_SHA}" >> $GITHUB_ENV
3627 fi
3728 shell : bash
3829
39- - name : Find merge base
40- id : find_merge_base
30+ - name : Check if 'skip changelog' label is present
31+ id : check_labels
4132 run : |
42- if [ -n "${{ env.BASE_SHA }}" ] && [ "${{ env.BASE_SHA }}" != "null" ]; then
43- MERGE_BASE=$(git merge-base ${{ env.BASE_SHA }} ${{ github.sha }})
44- if [ -z "$MERGE_BASE" ]; then
45- echo "Unable to find merge base. Skipping changelog check."
46- echo "SKIP_CHANGELOG_CHECK=true" >> $GITHUB_ENV
47- else
48- echo "MERGE_BASE=${MERGE_BASE}" >> $GITHUB_ENV
49- fi
50- else
51- echo "Unable to make the merge base calculation due to missing or null BASE_SHA. Skipping changelog check."
33+ SKIP_CHANGELOG_LABEL="${{ contains(github.event.pull_request.labels.*.name, 'skip changelog') }}"
34+ if [ "$SKIP_CHANGELOG_LABEL" = "true" ]; then
35+ echo "Skip changelog label is present. Skipping changelog check."
5236 echo "SKIP_CHANGELOG_CHECK=true" >> $GITHUB_ENV
5337 fi
5438 shell : bash
5842 echo "Base SHA: ${{ env.BASE_SHA }}"
5943 echo "Current SHA: ${{ github.sha }}"
6044 echo "Merge Base: ${{ env.MERGE_BASE }}"
61- shell : bash
62-
63- - name : Fetch PR labels and check for skip changelog
64- id : fetch_and_check_labels
65- run : |
66- PR_LABELS=$(curl -s -H "Authorization: token ${{ inputs.github_token }}" \
67- "https://api.github.com/repos/${{ github.repository }}/issues/${{ inputs.pr_number }}/labels" | \
68- jq -r '.[].name | @sh' | tr '\n' ' ')
69- echo "PR_LABELS=${PR_LABELS}" >> $GITHUB_ENV
70-
71- if echo "${PR_LABELS}" | grep -q "'skip changelog'"; then
72- echo "Skip changelog label is present. Skipping changelog check."
73- echo "SKIP_CHANGELOG_CHECK=true" >> $GITHUB_ENV
74- fi
45+ echo "SKIP_CHANGELOG_CHECK: ${{ env.SKIP_CHANGELOG_CHECK }}"
7546 shell : bash
7647
7748 - name : Check if changelog is updated
8758 PUBLIC_PACKAGES=("commerce-sdk-react" "pwa-kit-create-app" "pwa-kit-dev" "pwa-kit-react-sdk" "pwa-kit-runtime" "template-retail-react-app")
8859
8960 for PACKAGE in "${PUBLIC_PACKAGES[@]}"; do
90- if echo "$CHANGED_FILES" | grep -i "^packages/$PACKAGE/"; then
61+ if echo "$CHANGED_FILES" | grep -iq "^packages/$PACKAGE/"; then
9162 if ! echo "$CHANGED_FILES" | grep -iq "^packages/$PACKAGE/CHANGELOG.md"; then
9263 echo "CHANGELOG.md was not updated for package $PACKAGE. Please update the CHANGELOG.md or add 'skip changelog' label to the PR."
9364 exit 1
0 commit comments