diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml new file mode 100644 index 00000000..ec072849 --- /dev/null +++ b/.github/workflows/changelog.yml @@ -0,0 +1,35 @@ +name: Changelog +on: + pull_request: + types: [opened, synchronize, reopened, labeled, unlabeled] + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Check for skip label + id: check-skip + run: | + if [[ "${{ contains(github.event.pull_request.labels.*.name, 'skip-changelog') }}" == "true" ]]; then + echo "skip=true" >> $GITHUB_OUTPUT + echo "Skipping changelog validation due to skip-changelog label" + else + echo "skip=false" >> $GITHUB_OUTPUT + fi + + - name: Validate changelog entry + if: steps.check-skip.outputs.skip == 'false' + run: | + CHANGELOG_MODIFIED=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -E '^CHANGELOG\.md$' || echo "") + + if [ -z "$CHANGELOG_MODIFIED" ]; then + echo "::error::No changelog entry found. Please add an entry to CHANGELOG.md or add the 'skip-changelog' label if this change does not require a changelog entry." + exit 1 + else + echo "Changelog has been updated" + fi