ci: retry transient Windows installer packaging
Windows CI / verify (push) Successful in 3m48s

Extend the bounded Electron download retry to the installer build, then bump the release contracts to 1.0.13.
This commit is contained in:
Sucukdeluxe
2026-08-12 21:55:07 +02:00
parent 1a1c37720e
commit 17b982016f
10 changed files with 29 additions and 13 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.12',
version: '1.0.13',
});
}
+3 -1
View File
@@ -52,7 +52,9 @@ for (const relativePath of ['.github/workflows/windows-ci.yml', '.gitea/workflow
for (const command of requiredCommands) {
check(source.includes(command), `${relativePath} is missing ${command}`);
}
check(source.includes('if ($LASTEXITCODE -ne 0)') && source.match(/npm run pack/g)?.length >= 2, `${relativePath} does not retry transient package failures`);
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`);
}
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.12', `package version is ${packageJson.version}`);
check(packageLock.version === '1.0.12', `lockfile version is ${packageLock.version}`);
check(packageLock.packages?.['']?.version === '1.0.12', `lockfile root package version is ${packageLock.packages?.['']?.version}`);
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.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.12'), 'initial version label is not 1.0.12');
check(indexSource.includes('Version: v1.0.13'), 'initial version label is not 1.0.13');
check(!indexSource.includes('Version: v4.1.13'), 'legacy version label is still present');
check(fs.existsSync(manifestPath), 'public release manifest is missing');