无法发布到 Azure devops Nuget

Unable to publish to Azure devops Nuget

我构建了一个同时使用 PSGallery 和 Azure Devops 的模块(我有一个免费的存储库,我一直在使用它)。这是模块:https://www.powershellgallery.com/packages/xanderu.helpers/0.1.9

我 运行 遇到的问题是,当我尝试利用安全存储库时,我不断收到禁止错误。这是我调用模块的方式:

Publish-ToPSGallery -PSGalleryKey $PSGalleryKey `
    -secureRepoName 'PowershellAZDO' `
    -secureRepopublishApiKey $PATToken `
    -secureRepopublishApiURL "https://pkgs.dev.azure.com/$orgName/$projectName/_packaging/$feedName/nuget/v2/" `
    -secureRepoUser $secureRepoUser `
    -secureRepoPass $PATToken `
    -codePath .

它是一个非常简单的前向模块,但基本上创建了一个带有标签 'private' 的模块(或脚本),它应该相应地发布到 PSGallery 或 AZDO。我确定这与我使用令牌和凭据(或 API 密钥)的方式有关。有人知道我在这里做错了什么吗?

编辑:作为 xanderu.helpers 的一部分,有一个函数 new-powershelltemplate,它将自动构建可用于发布管道的模块清单或脚本基线

附加编辑: 我还尝试了以下推送到 myget nuget 并且它推送但它不会使用 find-module -repository myget 找到模块:

Publish-ToPSGallery -PSGalleryKey $PSGalleryKey `
    -secureRepoName 'MyGet' `
    -secureRepopublishApiKey $nugetAPIKey `
    -secureRepopublishApiURL "https://www.myget.org/F/$feedName/api/v2" `
    -secureRepoUser $secureRepoUser `
    -secureRepoPass $secureRepoPass `
    -codePath .

编辑 #3 当我 运行

nuget.exe sources

在我 运行 脚本之后,我可以看到 nuget 获取 PowershellAZDO 作为源。然后我运行:

nuget push -Source "PowershellAZDO" -ApiKey AzureDevOps .\xanderu.helpers.0.1.9.nupkg

然后系统提示我输入用户名和密码。当我输入用户名和 PATToken 时,它会推送包。这似乎是 Publish-Module 命令中的错误,但我不确定原因。就像模块传递的 PSCredential 不被尊重一样。我一直在挖掘,发现在 PowerShellGet v2.2.5 PSModule.psm1 文件中,有一个调用(第 10990 行):

Publish-PSArtifactUtility @PublishPSArtifactUtility_Params

我确实在其中看到了 PSCredential 对象。我已将以下步骤添加到 PowerShellGet 模块中,似乎可以解决此问题...但这是它会出现的源代码中的错误(从第 6018 行开始):

        elseif ($NuGetExePath) {
            & $NuGetExePath sources update -Name $Repository -UserName $Credential.Username -Password $Credential.GetNetworkCredential().Password
            Publish-NugetPackage -NupkgPath $NupkgFullName -Destination $Destination -NugetApiKey $NugetApiKey -NugetExePath $NuGetExePath -Verbose:$VerbosePreference
        }

NuGet 版本:5.7.0.6726

PowerShellGet 版本:2.2.5

这是由我使用的 Powershellget 模块 v 2.2.5 中的错误引起的。根本原因是因为 repo 没有传入密码,您需要将密码添加到 nuget 的配置中。这似乎在 PowerShellGet 的 3.0.0 版本中得到了解决。我将需要更新我的 manifest/modules 以强制加载该版本的模块来解决问题。

编辑:从头开始...我认为这似乎有效,但这是因为我的 nuget.exe 信誉被保留了。

编辑2: 这可以正常工作,并且不需要拧紧核心模块。在 运行 执行 Register-PSRepository 命令后,请确保您也 运行 以下内容,否则发布到 Azure Devops 的管道将无法工作。这是模块中的一个错误,因为它可以在其他地方使用。

nuget sources update -Name $secureRepoParams.Name -UserName $secureRepoParams.Credential -Password $secureRepoParams.Credential.GetNetworkCredential().Password