ci: provision Electron before focused smoke tests
Windows CI / verify (push) Successful in 3m23s

Retry Electron binary provisioning before Windows smoke tests and retain bounded retries for package and installer builds. Bump release contracts to 1.0.14.
This commit is contained in:
Sucukdeluxe
2026-08-12 22:00:39 +02:00
parent 17b982016f
commit f4df47c89f
10 changed files with 32 additions and 10 deletions
+1 -1
View File
@@ -93,7 +93,7 @@ if (process.platform === 'win32') {
sourcePath: electronSourceExecutable,
destinationPath: resolve(rootDirectory, 'node_modules', 'electron', 'dist', 'Twitch VOD Manager.exe'),
iconPath: resolve(rootDirectory, 'build', 'icon.ico'),
version: '1.0.13',
version: '1.0.14',
});
}
+2
View File
@@ -33,6 +33,7 @@ for (const relativePath of ['.github/workflows/windows-ci.yml', '.gitea/workflow
const source = fs.readFileSync(absolutePath, 'utf8');
const requiredCommands = [
'npm ci',
'npx install-electron --no',
'npm run lint',
'npm run test:lint-config',
'npm run security:check',
@@ -55,6 +56,7 @@ for (const relativePath of ['.github/workflows/windows-ci.yml', '.gitea/workflow
for (const command of ['npm run pack', 'npm run dist:ci']) {
check(source.match(new RegExp(command.replace(/[:]/g, '\\:'), 'g'))?.length >= 2, `${relativePath} does not retry transient ${command} failures`);
}
check(source.match(/npx install-electron --no/g)?.length >= 2, `${relativePath} does not retry Electron binary provisioning`);
const runSteps = source.split(/\r?\n/).filter((line) => /^\s+run:\s+/.test(line));
const timeoutSteps = source.split(/\r?\n/).filter((line) => /^\s+timeout-minutes:\s*10\s*$/.test(line));
check(timeoutSteps.length >= runSteps.length, `${relativePath} does not cap every command at ten minutes`);
+4 -4
View File
@@ -15,9 +15,9 @@ function check(condition, message) {
if (!condition) failures.push(message);
}
check(packageJson.version === '1.0.13', `package version is ${packageJson.version}`);
check(packageLock.version === '1.0.13', `lockfile version is ${packageLock.version}`);
check(packageLock.packages?.['']?.version === '1.0.13', `lockfile root package version is ${packageLock.packages?.['']?.version}`);
check(packageJson.version === '1.0.14', `package version is ${packageJson.version}`);
check(packageLock.version === '1.0.14', `lockfile version is ${packageLock.version}`);
check(packageLock.packages?.['']?.version === '1.0.14', `lockfile root package version is ${packageLock.packages?.['']?.version}`);
check(packageJson.build?.appId === 'io.github.sucukdeluxe.twitch-vod-manager', `appId is ${packageJson.build?.appId}`);
check(packageJson.build?.publish?.provider === 'generic', `publish provider is ${packageJson.build?.publish?.provider}`);
check(packageJson.build?.publish?.url === 'https://github.com/Sucukdeluxe/Twitch-VOD-Manager/releases/latest/download/', `publish URL is ${packageJson.build?.publish?.url}`);
@@ -65,7 +65,7 @@ check(mainSource.includes('GITHUB_RELEASES_DOWNLOAD_BASE_URL'), 'GitHub releases
check(mainSource.includes('https://api.github.com/repos/Sucukdeluxe/Twitch-VOD-Manager/releases/latest'), 'GitHub latest release API URL is missing');
check(mainSource.includes('https://github.com/Sucukdeluxe/Twitch-VOD-Manager/releases/download'), 'GitHub release download URL is missing');
check(!/storyboards\/\d{8,12}(?:-|\/)/.test(mainSource), 'numeric Twitch VOD example remains in the public source');
check(indexSource.includes('Version: v1.0.13'), 'initial version label is not 1.0.13');
check(indexSource.includes('Version: v1.0.14'), 'initial version label is not 1.0.14');
check(!indexSource.includes('Version: v4.1.13'), 'legacy version label is still present');
check(fs.existsSync(manifestPath), 'public release manifest is missing');