diff --git a/.github/workflows/dependabot-auto-merge.yaml b/.github/workflows/dependabot-auto-merge.yaml new file mode 100644 index 0000000..bc523aa --- /dev/null +++ b/.github/workflows/dependabot-auto-merge.yaml @@ -0,0 +1,62 @@ +name: Auto-merge Dependabot PRs + +on: + pull_request: + types: + - opened + - reopened + - synchronize + - ready_for_review + - labeled + +jobs: + dependabot-make-update: + # Only run on Dependabot PRs + if: github.event.pull_request.user.login == 'dependabot[bot]' + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install poetry + run: python -m pip install --upgrade pip setuptools wheel poetry + + - name: Install project dependencies + run: make install-ci + + - name: Update dependencies (make update) + run: make update + + - name: Lint (make lint) + run: make lint + + enable-automerge: + # Only run on Dependabot PRs after make update succeeds + if: github.event.pull_request.user.login == 'dependabot[bot]' + needs: dependabot-make-update + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + + steps: + - name: Fetch Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Enable auto-merge for Dependabot PRs + if: steps.metadata.outputs.update-type == 'version-update:semver-patch' + run: gh pr merge --auto --squash "$PR_URL" + env: + PR_URL: ${{ github.event.pull_request.html_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}