将 NuGet-package 推送到 GitLab 包注册表时出错 -> NuGet.Temporary.Package

问题描述 投票:0回答:3

我在将 NuGet 包推送到我们公司的 GitLab 包注册表时遇到问题。

在我的 NuGet-Package 中,我打包了一些二进制文件。这是 Nuspec 文件:

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    <id>test</id>
    <version></version>
    <authors>Company</authors>
    <description>Demo Project</description>
  </metadata>
  <files>
    <file src="../../__out/test/**" target="" />
  </files>
</package>

我构建了在 CI 中看起来不错的 nuget 包(我已经下载并检查了 nuget 文件)

构建完成后,我将包含此 CI 作业的 NuGet-Package 推送到注册表中。 Gitlab CI:

deploy:
  stage: deployNuGet
  image: mcr.microsoft.com/dotnet/sdk:5.0-buster-slim
  script:
    - dotnet nuget add source "$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text
    - dotnet nuget push __out/package/test.0.0.1.nupkg" --source gitlab

这会导致以下 CI 日志:

$ dotnet nuget add source "$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/packages/nuget/index.json" --name gitlab --username gitlab-ci-token --password $CI_JOB_TOKEN --store-password-in-clear-text
Package source with Name: gitlab added successfully.
warn : No API Key was provided and no API Key could be found for 'https://XXXX/api/v4/projects/XXXX/packages/nuget'. To save an API Key for a source use the 'setApiKey' command.
Pushing test.0.0.1.nupkg to 'https://XXXXXX/api/v4/projects/XXXXX/packages/nuget'...
  PUT https://XXXXX/api/v4/projects/XXXXXX/packages/nuget/
  Created https://XXXXX/api/v4/projects/XXXXXX/packages/nuget/ 780ms
Your package was pushed.

这对于退出一段时间来说效果很好,但现在我得到了不同的行为。 代替

test
包的是
NuGet.Temporary.Package

当我移到错误标志上时,它会显示以下消息:

Invalide Package: failed metadate extraction

有人知道如何解决这个问题吗?

gitlab nuget
3个回答
0
投票

这是自我管理的 AWS 实例上的 gitlab (14.0.x) 错误。

还有一个 MR 可以解决这个问题。

这是问题的解决方案https://gitlab.com/gitlab-org/gitlab/-/issues/335488#note_623985000


0
投票

这有点愚蠢,但如果有人像我一样复制粘贴命令,请确保您上传的是正确的文件(

.nupkg
文件)。我正在上传
.csproj
文件,因为我复制并粘贴了
dotnet pack
中的路径。如果您上传
.csproj
文件,Gitlab 不会发出警告或任何内容。


0
投票

在 GitLab 16.9 版本(撰写本文时的最新版本)中,如果您在 .CSPROJ 文件中指定

<PackageProjectUrl>
<PackageIconUrl>
,则会在我们的自托管实例上发生这种情况。

“解决方案”/解决方法是删除/注释掉这些属性。

© www.soinside.com 2019 - 2024. All rights reserved.