diff --git a/scripts/build-release.mjs b/scripts/build-release.mjs index cdd21ea..8411531 100644 --- a/scripts/build-release.mjs +++ b/scripts/build-release.mjs @@ -10,7 +10,7 @@ const version = packageManifest.version const tag = `v${version}` const ref = process.env.CODETRUSS_PLUGIN_RELEASE_REF || 'HEAD' const dist = join(root, 'dist') -const commitDate = execFileSync('git', ['show', '-s', '--format=%cI', ref], { +const commitDate = execFileSync('git', ['show', '-s', '--format=%cI', `${ref}^{commit}`], { cwd: root, encoding: 'utf8', }).trim() @@ -60,7 +60,11 @@ for (const [target, tree] of packages) { `--mtime=${commitDate}`, `--output=${output}`, `${ref}:${tree}`, - ], { cwd: root, stdio: 'inherit' }) + ], { + cwd: root, + env: { ...process.env, TZ: 'UTC' }, + stdio: 'inherit', + }) const digest = createHash('sha256').update(readFileSync(output)).digest('hex') writeFileSync(`${output}.sha256`, `${digest} ${filename}\n`) } diff --git a/scripts/verify-release.mjs b/scripts/verify-release.mjs index 4b84a91..7234726 100644 --- a/scripts/verify-release.mjs +++ b/scripts/verify-release.mjs @@ -9,9 +9,10 @@ import { setTimeout } from 'node:timers/promises' const root = join(dirname(fileURLToPath(import.meta.url)), '..') const dist = join(root, 'dist') -function buildAndHash() { +function buildAndHash(timeZone) { execFileSync(process.execPath, [join(root, 'scripts/build-release.mjs')], { cwd: root, + env: { ...process.env, TZ: timeZone }, stdio: 'inherit', }) return Object.fromEntries( @@ -22,10 +23,10 @@ function buildAndHash() { ) } -const first = buildAndHash() +const first = buildAndHash('Pacific/Honolulu') await setTimeout(1_100) -const second = buildAndHash() -assert.deepEqual(second, first, 'release archives changed across identical builds') +const second = buildAndHash('Asia/Tokyo') +assert.deepEqual(second, first, 'release archives changed across timezones') assert.equal(Object.keys(first).filter((name) => name.endsWith('.zip')).length, 2) assert.equal(Object.keys(first).filter((name) => name.endsWith('.sha256')).length, 2)