Repository navigation
Get-GitHubReleaseAsset only returns first 30 assets #372
Copy link
Copy link
Open
Labels
api-repositories-releasesWork to complete the API's defined here: https://github.com/proxy/developer.github.com/v3/repos/releases/Work to complete the API's defined here: https://github.com/proxy/developer.github.com/v3/repos/releases/bugThis relates to a bug in the existing module.This relates to a bug in the existing module.in progressWork on this issue is already underway. Please don't work start new work on it.Work on this issue is already underway. Please don't work start new work on it.
Description
Issue Details
Using Get-GitHubReleaseAsset on a release with more than 30 assets, only returns the first 30. Note that I'm using a GitHub token. I have tried this on Windows PowerShell 5.1 and PowerShell 7.2.6 on Windows.
Steps to reproduce the issue
# note that the latest as of this date is 1.22.0 which has 39 release assets (https://github.com/syncthing/syncthing/releases/tag/v1.22.0)
$> $release = Get-GitHubRelease -OwnerName syncthing -RepositoryName syncthing -Latest
$> $asset = Get-GitHubReleaseAsset -OwnerName syncthing -RepositoryName syncthing -Release $release.id
$> $asset.count
30Verbose logs showing the problem
$> $repoOwner = 'syncthing'
$> $repoNamer = 'syncthing'
$> $release = Get-GitHubRelease -OwnerName $repoOwner -RepositoryName $repoName -Latest -Verbose
VERBOSE: [0.16.1] Executing: Get-GitHubRelease -OwnerName "syncthing" -RepositoryName "syncthing" -Latest:$true -Verbose:$true
VERBOSE: Getting latest release from syncthing/syncthing
VERBOSE: Accessing [Get] https://github.com/proxy/api.github.com/repos/syncthing/syncthing/releases/latest [Timeout = 0)]
VERBOSE: GET https://github.com/proxy/api.github.com/repos/syncthing/syncthing/releases/latest with 0-byte payload
VERBOSE: received -1-byte response of content type application/json; charset=utf-8
VERBOSE: Telemetry has been disabled via configuration. Skipping reporting event [Get-GitHubRelease].
$> $asset = Get-GitHubReleaseAsset -OwnerName $repoOwner -RepositoryName $repoName -Release $release.id -Verbose
VERBOSE: [0.16.1] Executing: Get-GitHubReleaseAsset -OwnerName "syncthing" -RepositoryName "syncthing" -Release 78911291 -Verbose:$true
VERBOSE: Getting list of assets for release 78911291
VERBOSE: Accessing [Get] https://github.com/proxy/api.github.com/repos/syncthing/syncthing/releases/78911291/assets [Timeout = 0)]
VERBOSE: GET https://github.com/proxy/api.github.com/repos/syncthing/syncthing/releases/78911291/assets with 0-byte payload
VERBOSE: received -1-byte response of content type application/json; charset=utf-8
VERBOSE: Telemetry has been disabled via configuration. Skipping reporting event [Get-GitHubReleaseAsset].
Suggested solution to the issue
Is paging at play here? If so, how do I get the second page? No suggested solution.
Requested Assignment
I'm just reporting this problem, but don't want to fix it.
Operating System
OsName : Microsoft Windows 10 Pro
OsOperatingSystemSKU : 48
OsArchitecture : 64-bit
WindowsVersion : 2009
WindowsBuildLabEx : 19041.1.amd64fre.vb_release.191206-1406
OsLanguage : en-US
OsMuiLanguages : {en-US, en-GB}
PowerShell Version
Name Value
---- -----
PSVersion 5.1.19041.1682
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1682
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Module Version
Running: 0.16.1
Installed: 0.16.1
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
api-repositories-releasesWork to complete the API's defined here: https://github.com/proxy/developer.github.com/v3/repos/releases/Work to complete the API's defined here: https://github.com/proxy/developer.github.com/v3/repos/releases/bugThis relates to a bug in the existing module.This relates to a bug in the existing module.in progressWork on this issue is already underway. Please don't work start new work on it.Work on this issue is already underway. Please don't work start new work on it.
Activity
HowardWolosky commentedon Oct 10, 2022
Thanks for the report.
I just drafted up a fix that I've locally verified works, but I need to update some tests as well.
Get-GitHubReleaseAssetcombines three different API's into a single command: returning the full list of assets, returning a single asset and downloading an asset. In order to support downloading, it uses the single-call API (Invoke-GHRestMethod):PowerShellForGitHub/GitHubReleases.ps1
Lines 872 to 883 in 9aac697
However, for the "full list of assets" scenario, it really needs to be using
Invoke-GHRestMethodMultipleResultwhich will automatically take care of paging.Draft change is here: master...HowardWolosky:PowerShellForGitHub:releaseAssetPaging
pauby commentedon Oct 10, 2022
Awesome. Thanks for picking that up and troubleshooting it so quickly.
Xander-Rudolph commentedon Jul 25, 2023
Can we get a PR on this one? It's been a while and appears to have a fix:
master...HowardWolosky:PowerShellForGitHub:releaseAssetPaging
pauby commentedon Jul 25, 2023
Xanderu (@Xander-Rudolph) are you asking for me to submit a PR?
HanwhaARudolph commentedon Jul 25, 2023
Anyone who can 😁. I had to do a really janky workaround because I'm using this PowerShell module on ephemeral images.
pauby commentedon Jul 26, 2023
👍 I worked around it by creating my own function that does the work I need. It's not as complete as this as I don't need all the functionality so nothing I can PR in.
AlexYurov commentedon Dec 29, 2023
Howard Wolosky (@HowardWolosky) Could you please create a pull request for your draft? I'd really like to have this fix released so that my CI works correctly