Use BUNDLE_LOCKFILE when detecting the lockfile

Honor `BUNDLE_LOCKFILE` (added in Bundler 4) when selecting the lockfile used
for Bundler version detection, deployment mode, and bundler-cache keys. Without
this, workflows using an alternate lockfile can read the wrong `BUNDLED WITH`
version and generate cache keys from the wrong lockfile.
This commit is contained in:
Thomas Countz
2026-06-08 22:30:58 +02:00
committed by Benoit Daloze
parent a99ac84464
commit 12fd324f1d
3 changed files with 10 additions and 6 deletions
+4 -2
View File
@@ -15,14 +15,16 @@ function isValidBundlerVersion(bundlerVersion) {
// The returned gemfile is guaranteed to exist, the lockfile might not exist
export function detectGemfiles() {
const gemfilePath = process.env['BUNDLE_GEMFILE'] || 'Gemfile'
const lockfilePath = process.env['BUNDLE_LOCKFILE']
if (fs.existsSync(gemfilePath)) {
return [gemfilePath, `${gemfilePath}.lock`]
return [gemfilePath, lockfilePath || `${gemfilePath}.lock`]
} else if (process.env['BUNDLE_GEMFILE']) {
throw new Error(`$BUNDLE_GEMFILE is set to ${gemfilePath} but does not exist`)
}
if (fs.existsSync("gems.rb")) {
return ["gems.rb", "gems.locked"]
return ["gems.rb", lockfilePath || "gems.locked"]
}
return [null, null]