Skip to content

Commit d79ee30

Browse files
committed
fix(windows release): Fix stable version detection
Authentication check - Verifies if GitHub token is available Repository validation - Shows which repository we're querying Exit code monitoring - Captures gh CLI exit codes for diagnosis Detailed error messages - Shows both exceptions and command output
1 parent 47c68c0 commit d79ee30

File tree

1 file changed

+96
-6
lines changed

1 file changed

+96
-6
lines changed

.github/workflows/windows_build.yml

Lines changed: 96 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,57 @@ jobs:
194194
if ($isPreRelease) {
195195
# For pre-releases, compare against latest stable release
196196
Write-Host "Fetching latest stable release..."
197-
$releases = gh release list --limit 50 --json tagName,isPrerelease 2>$null
197+
Write-Host "GitHub token available: $($env:GH_TOKEN -ne $null -and $env:GH_TOKEN -ne '')"
198+
Write-Host "Repository: ${{ github.repository }}"
199+
200+
# Try multiple approaches to fetch releases
201+
$releases = $null
202+
203+
# First try with gh CLI
204+
try {
205+
$releases = gh release list --repo "${{ github.repository }}" --limit 50 --json tagName,isPrerelease 2>$null
206+
if ($LASTEXITCODE -ne 0) {
207+
# Capture stderr for logging
208+
$ghError = gh release list --repo "${{ github.repository }}" --limit 50 --json tagName,isPrerelease 1>$null 2>&1
209+
Write-Host "gh CLI failed with exit code: $LASTEXITCODE"
210+
Write-Host "gh CLI stderr: $ghError"
211+
$releases = $null
212+
}
213+
}
214+
catch {
215+
Write-Host "gh CLI exception: $($_.Exception.Message)"
216+
$releases = $null
217+
}
218+
219+
# Fallback to REST API if gh CLI fails
198220
if (-not $releases) {
199-
Write-Host "Failed to fetch releases"
200-
echo "notes=" >> $env:GITHUB_OUTPUT
221+
Write-Host "Trying REST API fallback..."
222+
try {
223+
$releases = gh api "repos/${{ github.repository }}/releases?per_page=50" --jq '[.[] | {tagName: .tag_name, isPrerelease: .prerelease}]' | ConvertFrom-Json
224+
}
225+
catch {
226+
Write-Host "REST API also failed: $($_.Exception.Message)"
227+
}
228+
}
229+
230+
if (-not $releases) {
231+
Write-Host "All methods failed to fetch releases, using fallback"
232+
$fallbackNotes = @"
233+
## 🚧 Development Build
234+
235+
**⚠️ This is an unstable development build. Use at your own risk!**
236+
237+
### Recent Changes:
238+
Unable to fetch detailed change log. This build contains the latest development changes.
239+
240+
---
241+
**Build Info:**
242+
- Commit: [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
243+
- Build: #${{ github.run_number }}
244+
- Date: $(Get-Date).ToUniversalTime().ToString('yyyy-MM-dd HH:mm:ss') + ' UTC'
245+
"@
246+
$fallbackNotes = $fallbackNotes -replace "(\r\n|\r|\n)", "%0A"
247+
echo "notes=$fallbackNotes" >> $env:GITHUB_OUTPUT
201248
return
202249
}
203250
@@ -217,10 +264,53 @@ jobs:
217264
} elseif ($isStableRelease) {
218265
# For stable releases, compare against previous release (stable or pre-release)
219266
Write-Host "Fetching previous releases..."
220-
$releases = gh release list --limit 50 --json tagName 2>$null
267+
Write-Host "Repository: ${{ github.repository }}"
268+
269+
# Try multiple approaches to fetch releases
270+
$releases = $null
271+
272+
# First try with gh CLI
273+
try {
274+
$releases = gh release list --repo "${{ github.repository }}" --limit 50 --json tagName 2>$null
275+
if ($LASTEXITCODE -ne 0) {
276+
$errorOutput = gh release list --repo "${{ github.repository }}" --limit 50 --json tagName 2>&1
277+
Write-Host "gh CLI failed with exit code: $LASTEXITCODE"
278+
Write-Host "gh CLI error output: $errorOutput"
279+
$releases = $null
280+
}
281+
}
282+
catch {
283+
Write-Host "gh CLI exception: $($_.Exception.Message)"
284+
$releases = $null
285+
}
286+
287+
# Fallback to REST API if gh CLI fails
221288
if (-not $releases) {
222-
Write-Host "Failed to fetch releases"
223-
echo "notes=" >> $env:GITHUB_OUTPUT
289+
Write-Host "Trying REST API fallback..."
290+
try {
291+
$releases = gh api "repos/${{ github.repository }}/releases?per_page=50" --jq '[.[] | {tagName: .tag_name}]' | ConvertFrom-Json
292+
}
293+
catch {
294+
Write-Host "REST API also failed: $($_.Exception.Message)"
295+
}
296+
}
297+
298+
if (-not $releases) {
299+
Write-Host "All methods failed to fetch releases, using fallback"
300+
$currentVersion = "${{ github.ref }}" -replace "refs/tags/", ""
301+
$fallbackNotes = @"
302+
## 🎉 Stable Release
303+
304+
### Release $currentVersion:
305+
Unable to fetch detailed change log. Please refer to the commit history for changes.
306+
307+
---
308+
**Release Info:**
309+
- Version: $currentVersion
310+
- Date: $(Get-Date).ToUniversalTime().ToString('yyyy-MM-dd HH:mm:ss') + ' UTC'
311+
"@
312+
$fallbackNotes = $fallbackNotes -replace "(\r\n|\r|\n)", "%0A"
313+
echo "notes=$fallbackNotes" >> $env:GITHUB_OUTPUT
224314
return
225315
}
226316

0 commit comments

Comments
 (0)