chore(release): point updater feed at updates.mailib.ru (v1.0.16)

Set build.publish.url to the production HTTPS feed, bump version to 1.0.16, add publish-to-updates.ps1 for VPS upload, and normalize Linux AppImage names from x86_64 to x64 after pack:linux.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-18 00:55:53 +08:00
parent 963a1f0790
commit 9f82a541fc
4 changed files with 107 additions and 26 deletions
+53
View File
@@ -0,0 +1,53 @@
# Заливка релиза на https://updates.mailib.ru/ (nginx root: /var/www/updates_mailib_ru)
# Использование:
# 1) Положите артефакты в $LocalDir (или соберите pack:win и скопируйте из release\)
# 2) powershell -ExecutionPolicy Bypass -File scripts\publish-to-updates.ps1
$ErrorActionPreference = 'Stop'
$Key = "$env:USERPROFILE\.ssh\ttrpg_updates_root"
$LocalDir = 'D:\TTRPG-Release'
$SshTarget = 'root@185.173.94.234'
$RemoteDir = '/var/www/updates_mailib_ru'
if (-not (Test-Path $Key)) {
Write-Error "SSH key not found: $Key"
}
if (-not (Test-Path $LocalDir)) {
Write-Error "Local release folder not found: $LocalDir"
}
$patterns = @(
'latest.yml',
'latest-linux*.yml',
'latest-mac.yml',
'TTRPGPlayer-Setup.exe',
'TTRPGPlayer-Setup.exe.blockmap',
'TTRPGPlayer-x64.AppImage',
'TTRPGPlayer-x86_64.AppImage',
'TTRPGPlayer-arm64.AppImage',
'TTRPGPlayer-x64.dmg',
'TTRPGPlayer-arm64.dmg'
)
$files = @()
foreach ($pat in $patterns) {
$files += Get-ChildItem -Path $LocalDir -Filter $pat -File -ErrorAction SilentlyContinue
}
$files = $files | Sort-Object -Property Name -Unique
if (-not $files) {
Write-Error "No release files matched in $LocalDir"
}
Write-Host "Uploading to ${SshTarget}:${RemoteDir}"
foreach ($f in $files) {
Write-Host " -> $($f.Name)"
& scp -i $Key $f.FullName "${SshTarget}:${RemoteDir}/"
}
& ssh -i $Key $SshTarget "chown -R www-data:www-data $RemoteDir && ls -la $RemoteDir"
Write-Host ''
Write-Host 'Verify:'
Write-Host ' curl https://updates.mailib.ru/latest.yml'
+30
View File
@@ -6,6 +6,8 @@
* the AppImage. Build from Linux/WSL instead.
*/
import { spawnSync } from 'node:child_process';
import fs from 'node:fs';
import path from 'node:path';
import process from 'node:process';
function run(command, args) {
@@ -19,6 +21,33 @@ function run(command, args) {
}
}
/** electron-builder для AppImage x64 часто даёт `x86_64` в имени — выравниваем под feed. */
function normalizeLinuxReleaseNames() {
const releaseDir = path.resolve('release');
if (!fs.existsSync(releaseDir)) return;
for (const name of fs.readdirSync(releaseDir)) {
if (!name.includes('x86_64')) continue;
const from = path.join(releaseDir, name);
const to = path.join(releaseDir, name.replaceAll('x86_64', 'x64'));
if (from !== to && !fs.existsSync(to)) {
fs.renameSync(from, to);
console.log(`[pack:linux] renamed ${name} -> ${path.basename(to)}`);
}
}
for (const ymlName of fs.readdirSync(releaseDir)) {
if (!ymlName.startsWith('latest-linux') || !ymlName.endsWith('.yml')) continue;
const ymlPath = path.join(releaseDir, ymlName);
const text = fs.readFileSync(ymlPath, 'utf8');
const next = text.replaceAll('x86_64', 'x64');
if (next !== text) {
fs.writeFileSync(ymlPath, next);
console.log(`[pack:linux] patched ${ymlName} (x86_64 -> x64)`);
}
}
}
if (process.platform === 'win32') {
console.error(
[
@@ -35,3 +64,4 @@ if (process.platform === 'win32') {
run('npm', ['run', 'build']);
run('electron-builder', ['--linux']);
normalizeLinuxReleaseNames();