From 620c9c3eca4fa24d571cefef852d22c15a441804 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sun, 5 Jul 2026 20:21:15 +0900 Subject: [PATCH] Verify deployed release commit --- scripts/ship-release.mjs | 14 ++++++++------ scripts/verify-public-deploy.mjs | 7 +++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/scripts/ship-release.mjs b/scripts/ship-release.mjs index 3644a94..1c8b164 100644 --- a/scripts/ship-release.mjs +++ b/scripts/ship-release.mjs @@ -3,15 +3,17 @@ import { mkdirSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; const qaVersion = process.env.PUBLIC_QA_VERSION ?? makeQaVersion(); +const releaseCommit = gitValue(['rev-parse', 'HEAD'], 'unknown'); +const releaseShortCommit = gitValue(['rev-parse', '--short', 'HEAD'], 'unknown'); assertNoTrackedChanges(); runPnpmScript('verify:local-release'); runPnpmScript('qa:early'); -writeReleaseManifest(qaVersion); +writeReleaseManifest(qaVersion, releaseCommit, releaseShortCommit); runPnpmScript('deploy:nas:dist'); -runPnpmScript('verify:public-deploy', { PUBLIC_QA_VERSION: qaVersion }); +runPnpmScript('verify:public-deploy', { PUBLIC_QA_VERSION: qaVersion, PUBLIC_QA_COMMIT: releaseCommit }); -console.log(`Shipped and verified public deploy with PUBLIC_QA_VERSION=${qaVersion}`); +console.log(`Shipped and verified public deploy with PUBLIC_QA_VERSION=${qaVersion} at ${releaseShortCommit}`); function makeQaVersion() { const stamp = new Date().toISOString().replace(/[-:.TZ]/g, '').slice(0, 14); @@ -33,12 +35,12 @@ function assertNoTrackedChanges() { } } -function writeReleaseManifest(qaVersion) { +function writeReleaseManifest(qaVersion, commit, shortCommit) { const manifest = { app: 'heros_web', qaVersion, - commit: gitValue(['rev-parse', 'HEAD'], 'unknown'), - shortCommit: gitValue(['rev-parse', '--short', 'HEAD'], 'unknown'), + commit, + shortCommit, branch: gitValue(['branch', '--show-current'], 'unknown'), generatedAt: new Date().toISOString(), verification: ['verify:local-release', 'qa:early', 'verify:public-deploy'] diff --git a/scripts/verify-public-deploy.mjs b/scripts/verify-public-deploy.mjs index ca4d885..4f45e1d 100644 --- a/scripts/verify-public-deploy.mjs +++ b/scripts/verify-public-deploy.mjs @@ -5,6 +5,7 @@ import { chromium } from 'playwright'; const targetUrl = withQaParams(process.env.PUBLIC_QA_URL ?? 'https://comtropy.synology.me/heros_web/'); const screenshotPath = process.env.PUBLIC_QA_SCREENSHOT ?? 'dist/public-deploy-qa.png'; const expectedQaVersion = process.env.PUBLIC_QA_VERSION; +const expectedCommit = process.env.PUBLIC_QA_COMMIT; const expectedTitle = '\uC0BC\uAD6D\uC9C0: \uC138 \uD615\uC81C\uC758 \uB9F9\uC138'; const relevantLogPattern = /asset|audio|cannot|failed|map|missing|portrait|sprite|story|texture|unit/i; @@ -110,6 +111,12 @@ try { `Expected deployed release manifest qaVersion ${expectedQaVersion}: ${JSON.stringify(releaseManifest)}` ); } + if (expectedCommit) { + assert( + releaseManifest.commit === expectedCommit, + `Expected deployed release manifest commit ${expectedCommit}: ${JSON.stringify(releaseManifest)}` + ); + } const relevantLogs = consoleMessages.filter( (message) => message.type === 'error' || (isWarning(message.type) && relevantLogPattern.test(message.text))