fix: add --verbose to tauri build, skip latest.json if no update bundle

This commit is contained in:
lanrtop 2026-04-02 01:24:03 +09:00
parent 371a32b026
commit 60b42e37c6

View File

@ -61,6 +61,7 @@ jobs:
请查看提交记录了解详情。 请查看提交记录了解详情。
releaseDraft: false releaseDraft: false
prerelease: false prerelease: false
args: --verbose
# 上传到阿里云 OSS + 生成 latest.json # 上传到阿里云 OSS + 生成 latest.json
- name: Upload to OSS & generate latest.json - name: Upload to OSS & generate latest.json
@ -83,46 +84,55 @@ jobs:
$version = $tag.TrimStart('v') $version = $tag.TrimStart('v')
$nsisDir = "$env:GITHUB_WORKSPACE\src-tauri\target\release\bundle\nsis" $nsisDir = "$env:GITHUB_WORKSPACE\src-tauri\target\release\bundle\nsis"
Write-Host "=== nsis dir contents ===" Write-Host "=== bundle dir (all) ==="
Get-ChildItem $nsisDir | ForEach-Object { Write-Host $_.Name } Get-ChildItem "$env:GITHUB_WORKSPACE\src-tauri\target\release\bundle" -Recurse | ForEach-Object { Write-Host $_.FullName }
$all = Get-ChildItem $nsisDir $all = Get-ChildItem $nsisDir
$installer = $all | Where-Object { $_.Name.EndsWith('-setup.exe') } | Select-Object -First 1 $installer = $all | Where-Object { $_.Name.EndsWith('-setup.exe') } | Select-Object -First 1
$updateZip = $all | Where-Object { $_.Name.EndsWith('.nsis.zip') } | Select-Object -First 1 $updateZip = $all | Where-Object { $_.Name.EndsWith('.nsis.zip') -and -not $_.Name.EndsWith('.nsis.zip.sig') } | Select-Object -First 1
$sigFile = $all | Where-Object { $_.Name.EndsWith('.nsis.zip.sig') } | Select-Object -First 1 $sigFile = $all | Where-Object { $_.Name.EndsWith('.nsis.zip.sig') } | Select-Object -First 1
Write-Host "installer : $($installer.FullName)" Write-Host "installer : $($installer?.FullName)"
Write-Host "updateZip : $($updateZip.FullName)" Write-Host "updateZip : $($updateZip?.FullName)"
Write-Host "sigFile : $($sigFile.FullName)" Write-Host "sigFile : $($sigFile?.FullName)"
if (-not $installer) { Write-Error "installer not found!"; exit 1 }
$bucket = "oss://$env:OSS_BUCKET" $bucket = "oss://$env:OSS_BUCKET"
$endpoint = "https://$env:OSS_ENDPOINT" $endpoint = "https://$env:OSS_ENDPOINT"
& $oss config -e $endpoint -i $env:OSS_KEY_ID -k $env:OSS_KEY_SECRET -L CH & $oss config -e $endpoint -i $env:OSS_KEY_ID -k $env:OSS_KEY_SECRET -L CH
& $oss cp $installer.FullName "$bucket/releases/$tag/$($installer.Name)" -f & $oss cp $installer.FullName "$bucket/releases/$tag/$($installer.Name)" -f
& $oss cp $updateZip.FullName "$bucket/releases/$tag/$($updateZip.Name)" -f
& $oss cp $sigFile.FullName "$bucket/releases/$tag/$($sigFile.Name)" -f
# 生成 latest.json if ($updateZip -and $sigFile) {
$date = (Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ') & $oss cp $updateZip.FullName "$bucket/releases/$tag/$($updateZip.Name)" -f
$baseUrl = "https://$env:OSS_BUCKET.$env:OSS_ENDPOINT/releases/$tag" & $oss cp $sigFile.FullName "$bucket/releases/$tag/$($sigFile.Name)" -f
$sig = (Get-Content $sigFile.FullName -Raw).Trim()
$json = [ordered]@{ # 生成 latest.json
version = $version $date = (Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ')
pub_date = $date $baseUrl = "https://$env:OSS_BUCKET.$env:OSS_ENDPOINT/releases/$tag"
notes = "版本 $tag 已发布" $sig = (Get-Content $sigFile.FullName -Raw).Trim()
platforms = [ordered]@{
'windows-x86_64' = [ordered]@{ $json = [ordered]@{
signature = $sig version = $version
url = "$baseUrl/$($updateZip.Name)" pub_date = $date
notes = "版本 $tag 已发布"
platforms = [ordered]@{
'windows-x86_64' = [ordered]@{
signature = $sig
url = "$baseUrl/$($updateZip.Name)"
}
} }
} } | ConvertTo-Json -Depth 5
} | ConvertTo-Json -Depth 5
$json | Out-File -FilePath latest.json -Encoding utf8NoBOM $json | Out-File -FilePath latest.json -Encoding utf8NoBOM
Write-Host "=== latest.json ===" Write-Host "=== latest.json ==="
Get-Content latest.json Get-Content latest.json
& $oss cp latest.json "$bucket/latest.json" -f & $oss cp latest.json "$bucket/latest.json" -f
Write-Host "latest.json uploaded"
} else {
Write-Warning "update bundle (.nsis.zip) not found — skipping updater upload"
Write-Warning "Check that TAURI_SIGNING_PRIVATE_KEY is correctly set"
}