diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index a41c2a3c..f08b49d6 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -6,7 +6,7 @@ updates: directory: '/' schedule: interval: weekly - time: '08:00' + time: '02:00' timezone: 'Europe/Berlin' open-pull-requests-limit: 5 commit-message: diff --git a/.github/workflows/dependabot-automerge.yaml b/.github/workflows/dependabot-automerge.yaml new file mode 100644 index 00000000..71d40ecc --- /dev/null +++ b/.github/workflows/dependabot-automerge.yaml @@ -0,0 +1,50 @@ +name: dependabot merger + +on: + workflow_dispatch: + schedule: + - cron: '00 03 * * Mon' # trigger every Monday at 3:00 a.m., as our dependabot is configured to raise PRs every Monday at 2:00 a.m. + +env: + DEPENDABOT_GROUPS: | + production-minor-patch group + plugins group + test group + github-actions group +jobs: + review-prs: + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Approve and Merge PRs + run: | + PRS=$(gh pr list --app "dependabot" --state "open" --json number,title) + PR_NUMBERS= + while IFS= read -r GROUP; do + if [[ -z "$GROUP" ]]; then + continue + fi + + MATCHES=$(jq -r --arg group "$GROUP" '.[] | select(.title | contains($group)) | .number' <<< "$PRS") + echo "[DEBUG] Found PRs for group '$GROUP': '$MATCHES'" + + PR_NUMBERS="$MATCHES"$'\n'"$PR_NUMBERS" + done <<< "${{ env.DEPENDABOT_GROUPS }}" + echo "[DEBUG] Approving and Merging following PRs: '$PR_NUMBERS'" + + while IFS= read -r PR_NUMBER; do + if [[ -z "$PR_NUMBER" ]]; then + continue + fi + + echo "[DEBUG] Approving and Merging PR #$PR_NUMBER" + gh pr merge "$PR_NUMBER" --auto --squash + gh pr review "$PR_NUMBER" --approve + done <<< "$PR_NUMBERS" + env: + GH_TOKEN: ${{ secrets.BOT_SDK_JS_FOR_DOCS_REPO_PR }}