如何使用 dotnet 将 .nupkg 推送到私有 NuGet 源?
How can I push a .nupkg to a private NuGet source using dotnet?
我正在创建一个 AWS CodePipeline,它引用了一个 CodeBuild 项目。此 CodeBuild 启动了一个 Ubuntu 计算实例,并引用了一个 buildspec.yml
文件。在 post-build 阶段,我想将 .nupkg
推送到私有 NuGet 源。
以下 Windows 命令行逻辑工作正常:
> dotnet pack path/to/my/proj.csjproj
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> nuget push path/to/my/newlypacked.nupkg -ApiKey key -Source https://source
因为 nuget.exe 在 Ubuntu 实例上不可用(如果我安装单声道并执行 mono nuget.exe ...
可能是这样,但这需要太长时间,即使在大型构建实例上也是如此) , 我想用dotnet nuget
。我将如何实现这一目标?
我知道 dotnet nuget
应该允许我实现与上面显示的等效的效果,但我发现文档很神秘,而且我正在努力寻找类似的 post。
我已经尝试安装 nuget
,并进行了以下操作,
> dotnet pack path/to/my/proj.csjproj
> apt-get install nuget -y
> mozroots --import --sync
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> nuget push path/to/my/newlypacked.nupkg -ApiKey key -Source https://source
结果如下:
Package Source with Name: MyPrivateRepo added successfully.
Pushing proj.nupkg to 'https://source'...
PUT https://source
BadRequest https://source 120ms
400 (Bad Request - The package does not appear to be a valid ZIP archive (could not find a valid end of central directory record) (DevOps Activity ID: ...))
System.Net.Http.HttpRequestException: 400 (Bad Request - The package does not appear to be a valid ZIP archive (could not find a valid end of central directory record) (DevOps Activity ID: ...))
...
...
我确认 .nupkg
确实是一个有效的 NuGet 包,并且存在于我指定的位置。
我也试过了,
> dotnet pack path/to/my/proj.csjproj
> apt-get install nuget -y
> mozroots --import --sync
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> dotnet nuget push path/to/my/newlypacked.nupkg -k key -s https://source
结果如下:
Package Source with Name: MyPrivateRepo added successfully.
error: Unable to load the service index for source https://source.
error: Response status code does not indicate success: 401 (Unauthorized).
任何人都可以引导我朝着正确的方向前进吗?提前致谢。
我已经开始工作了!事实证明,dotnet CLI 在一个非常特殊的位置查找 NuGet 配置(尽管在参考了他们的文档后,我不明白为什么我尝试的其他位置不起作用):~/.nuget/NuGet/NuGet.Config
。请注意,这是区分大小写的!
为了让构建管道工作,我有以下 buildspec.yml
结构:
...
> apt-get install nuget -y
> mozroots --import --sync
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> mkdir -p ~/.nuget/NuGet && mv ~/.config/NuGet/NuGet.Config ~/.nuget/NuGet
> dotnet pack path/to/my/proj.csjproj
> dotnet nuget push path/to/my/newlypacked.nupkg -k key -s https://source
...
无需安装单声道。希望对您有所帮助!
我正在创建一个 AWS CodePipeline,它引用了一个 CodeBuild 项目。此 CodeBuild 启动了一个 Ubuntu 计算实例,并引用了一个 buildspec.yml
文件。在 post-build 阶段,我想将 .nupkg
推送到私有 NuGet 源。
以下 Windows 命令行逻辑工作正常:
> dotnet pack path/to/my/proj.csjproj
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> nuget push path/to/my/newlypacked.nupkg -ApiKey key -Source https://source
因为 nuget.exe 在 Ubuntu 实例上不可用(如果我安装单声道并执行 mono nuget.exe ...
可能是这样,但这需要太长时间,即使在大型构建实例上也是如此) , 我想用dotnet nuget
。我将如何实现这一目标?
我知道 dotnet nuget
应该允许我实现与上面显示的等效的效果,但我发现文档很神秘,而且我正在努力寻找类似的 post。
我已经尝试安装 nuget
,并进行了以下操作,
> dotnet pack path/to/my/proj.csjproj
> apt-get install nuget -y
> mozroots --import --sync
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> nuget push path/to/my/newlypacked.nupkg -ApiKey key -Source https://source
结果如下:
Package Source with Name: MyPrivateRepo added successfully.
Pushing proj.nupkg to 'https://source'...
PUT https://source
BadRequest https://source 120ms
400 (Bad Request - The package does not appear to be a valid ZIP archive (could not find a valid end of central directory record) (DevOps Activity ID: ...))
System.Net.Http.HttpRequestException: 400 (Bad Request - The package does not appear to be a valid ZIP archive (could not find a valid end of central directory record) (DevOps Activity ID: ...))
...
...
我确认 .nupkg
确实是一个有效的 NuGet 包,并且存在于我指定的位置。
我也试过了,
> dotnet pack path/to/my/proj.csjproj
> apt-get install nuget -y
> mozroots --import --sync
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> dotnet nuget push path/to/my/newlypacked.nupkg -k key -s https://source
结果如下:
Package Source with Name: MyPrivateRepo added successfully.
error: Unable to load the service index for source https://source.
error: Response status code does not indicate success: 401 (Unauthorized).
任何人都可以引导我朝着正确的方向前进吗?提前致谢。
我已经开始工作了!事实证明,dotnet CLI 在一个非常特殊的位置查找 NuGet 配置(尽管在参考了他们的文档后,我不明白为什么我尝试的其他位置不起作用):~/.nuget/NuGet/NuGet.Config
。请注意,这是区分大小写的!
为了让构建管道工作,我有以下 buildspec.yml
结构:
...
> apt-get install nuget -y
> mozroots --import --sync
> nuget sources add -name MyPrivateRepo -source https://source -username u -password p
> mkdir -p ~/.nuget/NuGet && mv ~/.config/NuGet/NuGet.Config ~/.nuget/NuGet
> dotnet pack path/to/my/proj.csjproj
> dotnet nuget push path/to/my/newlypacked.nupkg -k key -s https://source
...
无需安装单声道。希望对您有所帮助!