|
name: Dependabot Auto-Merge |
|
|
|
on: |
|
pull_request: |
|
types: [opened, synchronize, reopened] |
|
|
|
permissions: |
|
contents: write |
|
pull-requests: write |
|
|
|
jobs: |
|
test: |
|
runs-on: ubuntu-latest |
|
if: github.actor == 'dependabot[bot]' |
|
|
|
steps: |
|
- name: Checkout code |
|
uses: actions/checkout@v4 |
|
|
|
- name: Set up JDK 8 |
|
uses: actions/setup-java@v4 |
|
with: |
|
java-version: '8' |
|
distribution: 'temurin' |
|
|
|
- name: Cache Gradle packages |
|
uses: actions/cache@v3 |
|
with: |
|
path: | |
|
~/.gradle/caches |
|
~/.gradle/wrapper |
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
|
restore-keys: | |
|
${{ runner.os }}-gradle- |
|
|
|
- name: Grant execute permission for gradlew |
|
run: chmod +x gradlew |
|
|
|
- name: Build project |
|
run: ./gradlew build --stacktrace |
|
|
|
- name: Run unit tests (if available) |
|
run: ./gradlew test --continue || echo "No unit tests found or test task not available" |
|
|
|
- name: Run Android tests (if available) |
|
run: ./gradlew connectedAndroidTest --continue || echo "No connected Android tests found or task not available" |
|
|
|
auto-merge: |
|
needs: test |
|
runs-on: ubuntu-latest |
|
if: github.actor == 'dependabot[bot]' |
|
|
|
steps: |
|
- name: Dependabot metadata |
|
id: metadata |
|
uses: dependabot/fetch-metadata@v1 |
|
with: |
|
github-token: "${{ secrets.GITHUB_TOKEN }}" |
|
|
|
- name: Enable auto-merge for Dependabot PRs |
|
if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-patch' || steps.metadata.outputs.update-type == 'version-update:semver-minor' }} |
|
run: gh pr merge --auto --merge "$PR_URL" |
|
env: |
|
PR_URL: ${{ github.event.pull_request.html_url }} |
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
|
|
- name: Comment on major version updates |
|
if: ${{ steps.metadata.outputs.update-type == 'version-update:semver-major' }} |
|
run: | |
|
gh pr comment "$PR_URL" --body "⚠️ This is a major version update. Please review manually before merging." |
|
env: |
|
PR_URL: ${{ github.event.pull_request.html_url }} |
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |