View as Markdown

Scopes with Other Build Tools

Configure merge queue scopes using your preferred monorepo tooling.


If you’re using monorepo tools 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.

To use the manual scopes mechanism, configure Mergify to expect scopes from your CI system:

scopes:
source:
manual:
queue_rules:
- name: default
batch_size: 5

Detecting Scopes with Your Build Tool

Section titled Detecting Scopes with Your Build Tool

Use your monorepo tool to determine affected projects and upload them to Mergify.

name: Detect Scopes
on:
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=$( my_monorepo_command_to_get_impacted_projects $BASE $HEAD | 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 }}

Using the mergifyio/mergify-ci Buildkite plugin, a first step resolves the merge-queue-aware base and head SHAs and exposes them as meta-data, while a second step computes the affected projects with your monorepo tool and uploads them to Mergify:

steps:
- label: ":mag: Get git refs"
key: git-refs
plugins:
- mergifyio/mergify-ci#v1:
action: scopes-git-refs
- label: ":mag: Detect and upload scopes"
depends_on: git-refs
command: |
BASE=$(buildkite-agent meta-data get "mergify-ci.base")
HEAD=$(buildkite-agent meta-data get "mergify-ci.head")
SCOPES=$(my_monorepo_command_to_get_impacted_projects "$BASE" "$HEAD" | paste -sd, -)
buildkite-agent meta-data set "mergify-ci.scopes" "$SCOPES"
plugins:
- mergifyio/mergify-ci#v1:
action: scopes-upload
token: "${MERGIFY_TOKEN}"

Install the Mergify CLI in your pipeline and export MERGIFY_TOKEN. Use mergify ci git-refs to get the merge-queue-aware base and head SHAs and mergify ci scopes-send to upload the detected scopes:

Terminal window
REFS=$(mergify ci git-refs)
BASE=$(echo "$REFS" | awk '/^Base:/ {print $2}')
HEAD=$(echo "$REFS" | awk '/^Head:/ {print $2}')
my_monorepo_command_to_get_impacted_projects "$BASE" "$HEAD" \
| jq -R -s '{scopes: split("\n") | map(select(length > 0))}' > scopes.json
mergify ci scopes-send --file scopes.json

Was this page helpful?