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
+8
View File
@@ -22,6 +22,14 @@ jobs:
- name: Clean install
run: npm ci
timeout-minutes: 10
- name: Provision Electron binary
run: |
npx install-electron --no
if ($LASTEXITCODE -ne 0) {
npx install-electron --no
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 10
- name: Lint
run: npm run lint
timeout-minutes: 10
+8
View File
@@ -22,6 +22,14 @@ jobs:
- name: Clean install
run: npm ci
timeout-minutes: 10
- name: Provision Electron binary
run: |
npx install-electron --no
if ($LASTEXITCODE -ne 0) {
npx install-electron --no
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
}
timeout-minutes: 10
- name: Lint
run: npm run lint
timeout-minutes: 10
+4
View File
@@ -1,5 +1,9 @@
# Changelog
## 1.0.14 - 2026-08-12
- Provision the Electron binary with a bounded retry before Windows CI smoke tests.
## 1.0.13 - 2026-08-12
- Apply the Windows CI retry to both directory and installer packaging.
+1 -1
View File
@@ -61,7 +61,7 @@ The application works in public mode without a Twitch login. Connecting a Twitch
## Installation
1. Open the [latest GitHub release](https://github.com/Sucukdeluxe/Twitch-VOD-Manager/releases/latest).
2. Download `Twitch-VOD-Manager-Setup-1.0.13.exe`.
2. Download `Twitch-VOD-Manager-Setup-1.0.14.exe`.
3. Run the installer and choose the installation directory.
4. Start Twitch VOD Manager and add a streamer.
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "twitch-vod-manager",
"version": "1.0.13",
"version": "1.0.14",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "twitch-vod-manager",
"version": "1.0.13",
"version": "1.0.14",
"license": "MIT",
"dependencies": {
"axios": "^1.16.1",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twitch-vod-manager",
"version": "1.0.13",
"version": "1.0.14",
"description": "Twitch VOD Manager - Download Twitch VODs easily",
"main": "dist/main.js",
"author": "Sucukdeluxe",
+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');
+1 -1
View File
@@ -940,7 +940,7 @@
<div class="settings-card" data-settings-pane="updates" hidden>
<h3 id="updateTitle">Updates</h3>
<p id="versionInfo" class="card-intro">Version: v1.0.13</p>
<p id="versionInfo" class="card-intro">Version: v1.0.14</p>
<button type="button" class="btn-secondary" id="checkUpdateBtn" onclick="checkUpdate()">Nach Updates suchen</button>
</div>