diff --git a/.github/workflows/dependabot-auto-approve.yml b/.github/workflows/dependabot-auto-approve.yml new file mode 100644 index 000000000..ae52c896f --- /dev/null +++ b/.github/workflows/dependabot-auto-approve.yml @@ -0,0 +1,26 @@ +name: Dependabot auto-approve +on: pull_request +permissions: + pull-requests: write +jobs: + dependabot: + runs-on: ubuntu-latest + # Checking the author will prevent your Action run failing on non-Dependabot PRs + if: github.event.pull_request.user.login == 'dependabot[bot]' + steps: + - name: Dependabot metadata + id: dependabot-metadata + uses: dependabot/fetch-metadata@v2 + - uses: actions/checkout@v4 + - name: Approve a PR if not already approved + # as long as it's not a npm PR, and the update is a patch version + if: "!contains(steps.dependabot-metadata.outputs.package-ecosystem, 'npm') && steps.dependabot-metadata.outputs.update-type == 'version-update:semver-patch'" + run: | + gh pr checkout "$PR_URL" # sets the upstream metadata for `gh pr status` + if [ "$(gh pr status --json reviewDecision -q .currentBranch.reviewDecision)" != "APPROVED" ]; + then gh pr review --approve "$PR_URL" + else echo "PR already approved, skipping additional approvals to minimize emails/notification noise."; + fi + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} \ No newline at end of file