我正在使用需要一些NuGet软件包的构建配置来设置一些CI。这些NuGet软件包建立在同一台服务器上,这很好。我读过我可以使用TeamCity的NuGet提要来满足我的要求。我一直在遵循this指南。
我已经在Build
项目上创建了提要,该项目已生成v1
,v2
和v3
端点。对于索引包,我选择了第一个选项,即
要仅索引由选定的构建配置发布的软件包,请将NuGet软件包索引器构建功能添加到这些构建配置。
似乎是最直接的。 NuGet packages indexer
功能应用于构建NuGet软件包工件的两种配置。这些工件正在正确构建,如下所示:
例如,如果我将v3
端点插入Visual Studio Package Sources
,我只会得到一个身份验证提示,后接错误Unable to load the service index for source .../v3/index.json. Response status code does not indicate success: 401 ().
。如果将v3
端点粘贴到浏览器中,则会得到一个json
对象具有属性@id
,@type
和comment
的对象的集合。浏览器中的v1
和v2
向我展示了一个带有空Packages
集合的XML文件。
我如何确认我的程序包实际上已经进入了提要,和/或我是否误解了端点的使用方式?
Update:事实证明,这确实是我的误解。 /v3/index.json列出了可以在Feed上执行的操作。使用/ v3 / query列出供稿托管的所有软件包。
剩下的问题是尝试从提要中使用软件包时出错。 TeamCity引发以下错误:
C:\Program Files\dotnet\sdk\3.1.201\NuGet.targets(124,5): error : Unable to load the service index for source <host>/httpAuth/app/nuget/feed/<project>/<feed_name>/v3/index.json
C:\Program Files\dotnet\sdk\3.1.201\NuGet.targets(124,5): error : Response status code does not indicate success: 401 ().
我的库中的解决方案文件旁边是以下NuGet.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nugetserver" value="<host>/httpAuth/app/nuget/feed/<project>/<feed_name>/v3/index.json" />
</packageSources>
</configuration>
连接所有点还需要其他东西吗?
证明TeamCity具有一个简洁的小功能,通过将提要放入NuGet Installer
输入中,可以很容易地引用Packages sources
运行器类型内的TeamCity提要作为构建步骤。通过在publishes
我的文件之前执行此构建步骤,一切都很好。