PowerShell / PSResourceGet

PSResourceGet is the package manager for PowerShell
https://www.powershellgallery.com/packages/Microsoft.PowerShell.PSResourceGet
MIT License
485 stars 92 forks source link

Support v3 dependencies for pwsh packages #1575

Open nbarnwell opened 7 months ago

nbarnwell commented 7 months ago

Prerequisites

Steps to reproduce

  1. Register an authenticated Azure DevOps Artifacts PSResourceRepository that has the PowerShell Gallery configured as an upstream source. Use the Microsoft.PowerShell.SecureVault module as the source of credentials.
  2. Unregister the PowerShell Gallery resource repository.
  3. Install-PSResource PSWindowsUpdate

Expected behavior

The `PSWindowsUpdate` module and any dependencies are installed.

Actual behavior

The install appears to work, but the following warning is shown:

> WARNING: Installing dependencies is not currently supported for V3 server protocol repositories. The package will be installed without installing dependencies.

Error details

No response

Environment data

PS C:\temp> Get-Module Microsoft.PowerShell.PSResourceGet; $PSVersionTable

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Binary     1.0.2                 Microsoft.PowerShell.PSResourceGet  {Find-PSResource, Get-InstalledPSResource, Get-PSResourceRepository, Get-PSScriptFileInfo…}

Key   : PSVersion
Value : 7.4.0
Name  : PSVersion

Key   : PSEdition
Value : Core
Name  : PSEdition

Key   : GitCommitId
Value : 7.4.0
Name  : GitCommitId

Key   : OS
Value : Microsoft Windows 10.0.19044
Name  : OS

Key   : Platform
Value : Win32NT
Name  : Platform

Key   : PSCompatibleVersions
Value : {1.0, 2.0, 3.0, 4.0…}
Name  : PSCompatibleVersions

Key   : PSRemotingProtocolVersion
Value : 2.3
Name  : PSRemotingProtocolVersion

Key   : SerializationVersion
Value : 1.1.0.1
Name  : SerializationVersion

Key   : WSManStackVersion
Value : 3.0
Name  : WSManStackVersion

Visuals

No response

SydneyhSmith commented 7 months ago

Thanks @nbarnwell what repository are you seeing this with? and what is the apiversion?

nbarnwell commented 7 months ago

I updated the reproduction steps.

SydneyhSmith commented 7 months ago

Thanks, if you register this as a v2 feed instead of a v3 feed you can get rid of this warning message

nbarnwell commented 7 months ago

I'll try it again but I'm pretty sure I couldn't get it to work at all with a v2 feed, I think because it's an authenticated feed.

nbarnwell commented 7 months ago

@SydneyhSmith Indeed it doesn't work for authenticated repositories. In fact, I get the error I previously reported in https://github.com/PowerShell/PSResourceGet/issues/1491, which I don't think anyone cares about, either. PowerShell module stuff isn't fit for purpose when it comes to authenticated feeds. It's all very well and good encouraging folks to publish to the PowerShell gallery, but to have this massive blind spot when it comes to corporate packages in private feeds is a real surprise. I'd have thought the PowerShellGet team would've been dogfooding on Azure DevOps Artifacts feeds themselves, but I guess not or these issues (there are several) would get looked at.

Also, I wasn't trying to get rid of a warning message - I need dependency support on v3 feeds. V2 feeds are broken so telling me to go back to that when I've been on a several-month-long journey trying to get all this to hang together is a bit hard to swallow.

Gijsreyn commented 7 months ago

I don't know if this issue is related to the topic here.

What I find strange, is when adding PowerShellGallery as upstream source, it works with the old PowerShellGet to install a module through there. When using Install-PSResource, if the module has not been downloaded from PowerShellGallery, it throws an error it cannot find the module.

SydneyhSmith commented 7 months ago

@Gijsreyn can you please open a new issue for that-- that is not expected

Gijsreyn commented 6 months ago

@SydneyhSmith I'll run some more test to see the different endpoint urls from Azure Artifacts and open a issue if it persists.