@@ -194,10 +194,57 @@ jobs:
194
194
if ($isPreRelease) {
195
195
# For pre-releases, compare against latest stable release
196
196
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
198
220
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
201
248
return
202
249
}
203
250
@@ -217,10 +264,53 @@ jobs:
217
264
} elseif ($isStableRelease) {
218
265
# For stable releases, compare against previous release (stable or pre-release)
219
266
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
221
288
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
224
314
return
225
315
}
226
316
0 commit comments