Scopes with Turborepo
Configure merge queue scopes using Turborepo's dependency graph awareness.
If you’re using monorepo tools like Turborepo 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 Turborepo
Section titled Detecting Scopes with TurborepoUse the turbo run build --dry=json command to determine affected projects
and upload them to Mergify.
GitHub Actions
Section titled GitHub Actionsname: 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=$(npx turbo run build --dry=json --filter="[$BASE...$HEAD]" | jq -r '.packages | join(",")') 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 }}Buildkite
Section titled BuildkiteUsing 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 turbo run build --dry=json 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=$(npx turbo run build --dry=json --filter="[$BASE...$HEAD]" | jq -r '.packages | join(",")') buildkite-agent meta-data set "mergify-ci.scopes" "$SCOPES" plugins: - mergifyio/mergify-ci#v1: action: scopes-upload token: "${MERGIFY_TOKEN}"Any CI (Mergify CLI)
Section titled Any CI (Mergify CLI)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:
REFS=$(mergify ci git-refs)BASE=$(echo "$REFS" | awk '/^Base:/ {print $2}')HEAD=$(echo "$REFS" | awk '/^Head:/ {print $2}')
npx turbo run build --dry=json --filter="[$BASE...$HEAD]" \ | jq '{scopes: .packages}' > scopes.json
mergify ci scopes-send --file scopes.jsonWas this page helpful?
Thanks for your feedback!