diff --git a/.github/workflows/dependabot-reviewer.yml b/.github/workflows/dependabot-reviewer.yml new file mode 100644 index 0000000..239977f --- /dev/null +++ b/.github/workflows/dependabot-reviewer.yml @@ -0,0 +1,39 @@ +name: Dependabot Reviewer + +on: pull_request_target + +permissions: + pull-requests: write + contents: write + +jobs: + review-dependabot-pr: + name: Approve PR + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + env: + PR_URL: ${{ github.event.pull_request.html_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: Fetch Dependabot metadata + id: dependabot-metadata + uses: dependabot/fetch-metadata@v1.6.0 + + - name: Enable auto-merge for Dependabot PRs + run: gh pr merge --auto --squash "$PR_URL" + + - name: Approve patch and minor updates + if: ${{ steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch'|| steps.dependabot-metadata.outputs.update-type == 'version-update:semver-minor'}} + run: | + gh pr review "$PR_URL" --approve --body "I'm **approving** this pull request because **it only includes patch or minor updates**." + + - name: Approve major updates of dev dependencies + if: ${{ steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:development'}} + run: | + gh pr review "$PR_URL" --approve --body "I'm **approving** this pull request because **it only includes major updates of dev dependencies**." + + - name: Comment on major updates of normal dependencies + if: ${{ steps.dependabot-metadata.outputs.update-type == 'version-update:semver-major' && steps.dependabot-metadata.outputs.dependency-type == 'direct:production'}} + run: | + gh pr comment "$PR_URL" --body "I'm **not approving** this PR because **it includes major updates of normal dependencies**." + gh pr edit "$PR_URL" --add-label "requires-manual-qa"