Repository navigation
Replies: 2 comments
|
Follow-up: the initial sibling root-prefix hypothesis is disproved. The same behavior occurred for a release containing only changes under In GitHub Actions run This points to a broader affected-project filtering failure rather than path-prefix matching. As a release-validation workaround, we are moving scope authority to the repository-pinned Turbo graph over the exact production range ( |
|
The prefix theory doesn't hold on the turbo side, which matches your follow-up. turbo assigns a changed file to a package by path components, not string prefix: 2.10.5 compares components ( I rebuilt your layout ( The one documented difference between the two: Vercel treats "Changes that are not a part of the workspace definition" as global changes that "deploy all applications in the repository" (requirements). turbo maps those files ( To make Vercel act on turbo's answer, use the Ignored Build Step Vercel suggests. Wrap it so turbo's exit 2 (error) also builds: turbo query affected --base="${VERCEL_GIT_PREVIOUS_SHA:-HEAD^1}" --packages plume-vaults --exit-code > /dev/null || exit 10 skips, 1 builds. If the base SHA isn't in the clone, turbo assumes everything changed and the project builds. Verified on 2.10.5 and 2.11.7. Two caveats. The |
Uh oh!
There was an error while loading. Please reload this page.
Vercel’s built-in Skip deployment for unaffected projects appears to treat a sibling workspace whose directory shares the project root prefix as affecting the project.
Reproduction
Monorepo layout:
Vercel project configuration:
apps/plume-vaultsenableAffectedProjectsDeployments: trueapps/*andpackages/*nameA commit changed only:
Despite that, Vercel created and fully built the
plume-vaultsdeployment. The deployment API reportsbuildSkipped: false.Turborepo confirms the packages are unrelated:
turbo ls --filter=...plume-vaults-docsreturns onlyplume-vaults-docsturbo ls --filter=...plume-vaultsreturns onlyplume-vaultsplume-vaults-docsis not in the dependency closure ofplume-vaultsExpected
The
plume-vaultsdeployment should be skipped because neither its source nor any internal dependency changed.Actual
The sibling
apps/plume-vaults-docschange triggers a completeapps/plume-vaultsbuild.Suspected cause
The affected-project detector may be checking the root directory as a raw string prefix rather than a path-segment boundary:
Vercel references
plume-network/plume-vaultsprj_GAecs0aPBaRYnCLdRlynjxgfneAvdpl_AEpqSKaFBpV8MPCdDf5EQamziq1L4412083866aa603edf2b335989bc74557be6ccf859.0.02.10.5Could the Vercel/Turborepo team confirm whether sibling root-prefix collisions are expected to be path-boundary-safe and investigate this affected-project decision?
All reactions