From a6f2f607e695318da7ae3c63ec3bd0e113b13422 Mon Sep 17 00:00:00 2001 From: lanrtop Date: Thu, 2 Apr 2026 00:48:21 +0900 Subject: [PATCH] fix: find artifacts directly in OSS upload step --- .github/workflows/release.yml | 62 +++++++++++++++-------------------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0ccc80a..bdb1317 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,31 +49,6 @@ jobs: releaseDraft: false prerelease: false - # 找到生成的安装包和签名文件 - - name: Collect artifacts - id: artifacts - shell: pwsh - run: | - $tag = "${{ github.ref_name }}" - $version = $tag.TrimStart('v') - $nsisDir = "$env:GITHUB_WORKSPACE\src-tauri\target\release\bundle\nsis" - - $all = Get-ChildItem $nsisDir - $installer = $all | Where-Object { $_.Name -like "*_x64-setup.exe" -and $_.Name -notlike "*.sig" } | Select-Object -First 1 - $updateZip = $all | Where-Object { $_.Name -like "*.nsis.zip" -and $_.Name -notlike "*.sig" } | Select-Object -First 1 - $sigFile = $all | Where-Object { $_.Name -like "*.nsis.zip.sig" } | Select-Object -First 1 - - Write-Host "installer : $($installer.FullName)" - Write-Host "updateZip : $($updateZip.FullName)" - Write-Host "sigFile : $($sigFile.FullName)" - - echo "INSTALLER=$($installer.FullName)" >> $env:GITHUB_OUTPUT - echo "UPDATE_ZIP=$($updateZip.FullName)" >> $env:GITHUB_OUTPUT - echo "SIG_FILE=$($sigFile.FullName)" >> $env:GITHUB_OUTPUT - echo "VERSION=$version" >> $env:GITHUB_OUTPUT - echo "INSTALLER_NAME=$($installer.Name)" >> $env:GITHUB_OUTPUT - echo "UPDATE_ZIP_NAME=$($updateZip.Name)" >> $env:GITHUB_OUTPUT - # 上传到阿里云 OSS + 生成 latest.json - name: Upload to OSS & generate latest.json shell: pwsh @@ -83,31 +58,43 @@ jobs: OSS_BUCKET: ${{ secrets.OSS_BUCKET }} OSS_ENDPOINT: ${{ secrets.OSS_ENDPOINT }} run: | - # 下载 ossutil 可执行文件 + # 下载 ossutil $oss = "$env:GITHUB_WORKSPACE\ossutil64.exe" Invoke-WebRequest -Uri "https://gosspublic.alicdn.com/ossutil/1.7.17/ossutil-v1.7.17-windows-amd64.zip" -OutFile oss.zip Expand-Archive oss.zip -DestinationPath oss_tmp $exeFound = Get-ChildItem oss_tmp -Filter "ossutil*.exe" -Recurse | Select-Object -First 1 Copy-Item $exeFound.FullName $oss - $tag = "${{ github.ref_name }}" + # 直接在本步骤找文件,不依赖 step outputs + $tag = "${{ github.ref_name }}" + $version = $tag.TrimStart('v') + $nsisDir = "$env:GITHUB_WORKSPACE\src-tauri\target\release\bundle\nsis" + + Write-Host "=== nsis dir contents ===" + Get-ChildItem $nsisDir | ForEach-Object { Write-Host $_.Name } + + $all = Get-ChildItem $nsisDir + $installer = $all | Where-Object { $_.Name.EndsWith('-setup.exe') } | Select-Object -First 1 + $updateZip = $all | Where-Object { $_.Name.EndsWith('.nsis.zip') } | Select-Object -First 1 + $sigFile = $all | Where-Object { $_.Name.EndsWith('.nsis.zip.sig') } | Select-Object -First 1 + + Write-Host "installer : $($installer.FullName)" + Write-Host "updateZip : $($updateZip.FullName)" + Write-Host "sigFile : $($sigFile.FullName)" + $bucket = "oss://$env:OSS_BUCKET" $endpoint = "https://$env:OSS_ENDPOINT" - # 配置 ossutil & $oss config -e $endpoint -i $env:OSS_KEY_ID -k $env:OSS_KEY_SECRET -L CH - # 上传安装包和更新包 - & $oss cp "${{ steps.artifacts.outputs.INSTALLER }}" "$bucket/releases/$tag/${{ steps.artifacts.outputs.INSTALLER_NAME }}" -f - & $oss cp "${{ steps.artifacts.outputs.UPDATE_ZIP }}" "$bucket/releases/$tag/${{ steps.artifacts.outputs.UPDATE_ZIP_NAME }}" -f - & $oss cp "${{ steps.artifacts.outputs.SIG_FILE }}" "$bucket/releases/$tag/${{ steps.artifacts.outputs.UPDATE_ZIP_NAME }}.sig" -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 - $version = "${{ steps.artifacts.outputs.VERSION }}" $date = (Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ') $baseUrl = "https://$env:OSS_BUCKET.$env:OSS_ENDPOINT/releases/$tag" - $zipName = "${{ steps.artifacts.outputs.UPDATE_ZIP_NAME }}" - $sig = (Get-Content "${{ steps.artifacts.outputs.SIG_FILE }}" -Raw).Trim() + $sig = (Get-Content $sigFile.FullName -Raw).Trim() $json = [ordered]@{ version = $version @@ -116,10 +103,13 @@ jobs: platforms = [ordered]@{ 'windows-x86_64' = [ordered]@{ signature = $sig - url = "$baseUrl/$zipName" + url = "$baseUrl/$($updateZip.Name)" } } } | ConvertTo-Json -Depth 5 $json | Out-File -FilePath latest.json -Encoding utf8NoBOM + Write-Host "=== latest.json ===" + Get-Content latest.json + & $oss cp latest.json "$bucket/latest.json" -f