ci: retry transient Windows packaging downloads
Windows CI / verify (push) Successful in 3m45s

Retry the directory package once when Electron download transport is interrupted, keeping the Windows CI step bounded. Bump the release contracts to 1.0.12.
This commit is contained in:
Sucukdeluxe
2026-08-12 21:48:04 +02:00
parent 275d252f25
commit 1a1c37720e
10 changed files with 28 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.11',
version: '1.0.12',
});
}
+2 -1
View File
@@ -50,8 +50,9 @@ for (const relativePath of ['.github/workflows/windows-ci.yml', '.gitea/workflow
check(/runs-on:\s*windows-latest/.test(source), `${relativePath} does not use a Windows runner`);
check(/node-version:\s*['"]?24\.11\.1['"]?/.test(source), `${relativePath} does not pin Node 24.11.1`);
for (const command of requiredCommands) {
check(source.includes(`run: ${command}`), `${relativePath} is missing ${command}`);
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`);
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.11', `package version is ${packageJson.version}`);
check(packageLock.version === '1.0.11', `lockfile version is ${packageLock.version}`);
check(packageLock.packages?.['']?.version === '1.0.11', `lockfile root package version is ${packageLock.packages?.['']?.version}`);
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.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.11'), 'initial version label is not 1.0.11');
check(indexSource.includes('Version: v1.0.12'), 'initial version label is not 1.0.12');
check(!indexSource.includes('Version: v4.1.13'), 'legacy version label is still present');
check(fs.existsSync(manifestPath), 'public release manifest is missing');