Summary
linear-release sync crashes with ENOBUFS on large commit ranges because the git helpers in src/git.ts use execSync/execFileSync without setting maxBuffer, inheriting Node's 1 MB default.
Repro
We run the CLI via linear/linear-release-action@v0 on every push to main and to a production branch.
The action is invoked per-component via a matrix:
strategy:
matrix:
component: [brand, platform, infra, data]
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: linear/linear-release-action@v0
with:
access_key: ${{ secrets[...] }}
Only the platform matrix entry fails, it has the largest subtree and the broadest pipeline path filter, so the git output on a multi-day production batch crosses the 1 MB cap. The other three components stay under the limit and succeed.
Error
{"level":"error","msg":"Error: spawnSync /bin/sh ENOBUFS (stdout or stderr buffer reached maxBuffer size limit)"}
##[error]Process completed with exit code 1.
Root cause
src/git.ts calls execSync / execFileSync with no maxBuffer option, so Node uses the 1 MB default. Any single git invocation whose stdout exceeds that (git log over a wide range with path filters is the obvious one) will throw ENOBUFS and abort the sync, dropping the entire release.
Suggested fix
Either:
- Pass
maxBuffer: Infinity (or a large explicit value, e.g. 256 MB) on the execSync/execFileSync calls in src/git.ts
- Switch to streaming spawn and consume stdout incrementally
Version
linear/linear-release-action@v0 (resolves to the bundled CLI in v0.14.0).
Summary
linear-release synccrashes withENOBUFSon large commit ranges because the git helpers insrc/git.tsuseexecSync/execFileSyncwithout settingmaxBuffer, inheriting Node's 1 MB default.Repro
We run the CLI via
linear/linear-release-action@v0on every push tomainand to aproductionbranch.The action is invoked per-component via a matrix:
Only the
platformmatrix entry fails, it has the largest subtree and the broadest pipeline path filter, so the git output on a multi-day production batch crosses the 1 MB cap. The other three components stay under the limit and succeed.Error
Root cause
src/git.tscallsexecSync/execFileSyncwith nomaxBufferoption, so Node uses the 1 MB default. Any single git invocation whose stdout exceeds that (git logover a wide range with path filters is the obvious one) will throwENOBUFSand abort the sync, dropping the entire release.Suggested fix
Either:
maxBuffer: Infinity(or a large explicit value, e.g. 256 MB) on theexecSync/execFileSynccalls insrc/git.tsVersion
linear/linear-release-action@v0(resolves to the bundled CLI inv0.14.0).