merge-dependabot-pr.yml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. name: Merge Dependabot PR
  2. on: pull_request_target
  3. run-name: Merge Dependabot PR ${{ github.ref_name }}
  4. permissions: write-all
  5. jobs:
  6. merge-dependabot-pr:
  7. name: Merge Dependabot PR
  8. runs-on: ubuntu-latest
  9. if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'spring-projects/spring-security' }}
  10. steps:
  11. - uses: actions/checkout@v4
  12. with:
  13. show-progress: false
  14. ref: ${{ github.event.pull_request.head.sha }}
  15. - uses: actions/setup-java@v4
  16. with:
  17. distribution: temurin
  18. java-version: 17
  19. - name: Set Milestone to Dependabot Pull Request
  20. id: set-milestone
  21. run: |
  22. if test -f pom.xml
  23. then
  24. CURRENT_VERSION=$(mvn help:evaluate -Dexpression="project.version" -q -DforceStdout)
  25. else
  26. CURRENT_VERSION=$(cat gradle.properties | sed -n '/^version=/ { s/^version=//;p }')
  27. fi
  28. export CANDIDATE_VERSION=${CURRENT_VERSION/-SNAPSHOT}
  29. MILESTONE=$(gh api repos/$GITHUB_REPOSITORY/milestones --jq 'map(select(.due_on != null and (.title | startswith(env.CANDIDATE_VERSION)))) | .[0] | .title')
  30. if [ -z $MILESTONE ]
  31. then
  32. gh run cancel ${{ github.run_id }}
  33. echo "::warning title=Cannot merge::No scheduled milestone for $CURRENT_VERSION version"
  34. else
  35. gh pr edit ${{ github.event.pull_request.number }} --milestone $MILESTONE
  36. echo mergeEnabled=true >> $GITHUB_OUTPUT
  37. fi
  38. env:
  39. GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  40. - name: Merge Dependabot pull request
  41. if: steps.set-milestone.outputs.mergeEnabled
  42. run: gh pr merge ${{ github.event.pull_request.number }} --auto --rebase
  43. env:
  44. GH_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
  45. send-notification:
  46. name: Send Notification
  47. needs: [ merge-dependabot-pr ]
  48. if: ${{ failure() || cancelled() }}
  49. runs-on: ubuntu-latest
  50. steps:
  51. - name: Send Notification
  52. uses: spring-io/spring-security-release-tools/.github/actions/send-notification@v1
  53. with:
  54. webhook-url: ${{ secrets.SPRING_SECURITY_CI_GCHAT_WEBHOOK_URL }}