我正在创建一个引用CodeBuild项目的AWS CodePipeline。此CodeBuild启动一个Ubuntu计算实例,并引用一个buildspec.yml
文件。在构建后的阶段,我想将.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并执行mono nuget.exe ...
,但这会花费太长时间,即使在大型构建实例上也是如此),我想使用dotnet nuget
。我将如何实现这一目标?
我知道dotnet nuget
应该可以达到我上面显示的效果,但是我发现文档比较晦涩,因此我很难找到类似的帖子。
我已经尝试安装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).
有人可以引导我朝正确的方向前进吗?预先感谢。
答案 0 :(得分:1)
我已经开始工作了!事实证明,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
...
不需要单声道安装。我希望这会有所帮助!