Scopes with Bazel
Configure merge queue scopes using Bazel's dependency graph for precise batching.
If you’re using monorepo tools like Bazel that have built-in dependency graph analysis, you can leverage their affected project detection instead of using file patterns. This approach is often more accurate because these tools understand your project’s dependency relationships.
Configuring Manual Scopes
Section titled Configuring Manual ScopesTo use the manual scopes mechanism, configure Mergify to expect scopes from your CI system:
scopes: source: manual:
queue_rules: - name: default batch_size: 5Detecting Scopes with Bazel
Section titled Detecting Scopes with BazelIn your GitHub Actions workflow, use bazel query to determine affected projects and
upload them to Mergify:
name: Detect Scopeson: pull_request:
jobs: detect-scopes: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5
- name: Get git refs id: refs uses: Mergifyio/gha-mergify-ci@v11 with: action: scopes-git-refs
- name: Get scopes id: scopes env: HEAD: ${{ steps.refs.outputs.head }} BASE: ${{ steps.refs.outputs.base }} run: | scopes=$( \ bazel query --keep_going --noshow_progress --output=package \ "buildfiles(set($(git diff --name-only --diff-filter=ACMR \"$BASE\" \"$HEAD\" | tr '\n' ' ')))" \ 2>/dev/null | sort -u | paste -sd, - ) echo "scopes=$scopes" >> "$GITHUB_OUTPUT"
- name: Scopes upload uses: Mergifyio/gha-mergify-ci@v11 with: action: scopes-upload token: ${{ secrets.MERGIFY_TOKEN }} scopes: ${{ steps.scopes.outputs.scopes }}Was this page helpful?
Thanks for your feedback!