name: Pull Requests
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
jobs:
fmt:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 1
- uses: dtolnay/rust-toolchain@stable
- run: cargo fmt --check
clippy:
timeout-minutes: 5
runs-on: ubuntu-latest
needs: fmt
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 1
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets --all-features -- -D warnings
test:
timeout-minutes: 5
runs-on: ubuntu-latest
needs: clippy
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 1
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test --all-features
automerge:
runs-on: ubuntu-latest
needs: test
permissions:
pull-requests: write
contents: write
steps:
- name: Check Dependabot Author
id: check_author
run: |
if [[ "${{ github.actor }}" == *dependabot* ]]; then
echo "is_dependabot=true" >> $GITHUB_ENV
else
echo "is_dependabot=false" >> $GITHUB_ENV
fi
- id: metadata
if: env.is_dependabot == 'true'
uses: dependabot/fetch-metadata@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: merge_patch
if: steps.metadata.outputs.update-type == 'version-update:semver-patch' && env.is_dependabot == 'true'
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: merge_minor
if: steps.metadata.outputs.update-type == 'version-update:semver-minor' && env.is_dependabot == 'true'
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
update_release_draft:
needs:
- clippy
- test
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}