我已检查过TeamCity用户是否可以访问相关网络共享。
在网络共享上可用的包不是。
时,可以正确找到来自公共NuGet供稿的所有包我们在使用完全相同的路径通过Visual Studio构建时使用网络共享没有问题。
我尝试过使用“file:// ratchet / NuGetRepository”,但这并没有什么区别。
TeamCity日志条目和构建步骤配置的屏幕截图如下所示:
NuGet command: E:\BuildAgent01\plugins\nuget-agent\bin\JetBrains.TeamCity.NuGetRunner.exe E:\BuildAgent01\tools\NuGet.CommandLine.DEFAULT.nupkg\tools\NuGet.exe restore E:\BuildAgent01\work\95323b7041b60513\MySolution.sln -Source https://nuget.org/api/v2/ -Source \\ratchet\NuGetRepository\
答案 0 :(得分:1)
能够通过指定网络共享的完全限定名称来解决此问题,例如: \\ratchet.hq.local\NuGetRepository
。
答案 1 :(得分:0)
您可以在NuGet.targets文件中包含包源。只需找到注释行并添加路径即可。
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="\\ratchet\NuGetRepository\" />
答案 2 :(得分:0)
由于接受的答案没有为我的设置提供解决方案,因此我想发布所做的允许TeamCity访问我的网络共享。
首先,一个非常重要的注意事项:TeamCity Build Agent可以作为Windows服务运行,也可以直接在命令提示符下运行。对于我的机器,这会产生以下后果:
LocalSystem
身份登录。对于我们的网络共享,我的机器凭据未获得授权。LocalSystem
帐户获得权限,但这不是我的选择。 < / LI>
快速解决方案是在命令提示符下运行构建代理并将其称为一天;但是,我确实希望将构建代理作为Windows服务运行,因为我认为这是一种更清洁的方法。
首先,我需要授予我的域用户作为服务登录的权限。这需要使用我的域用户的安全上下文来运行服务。我导航到本地安全策略中的用户权限分配:
控制面板 - &gt;管理工具 - &gt;本地安全政策 - &gt;本地政策 - &gt;用户权利分配
接下来,我将我的域用户添加到以servcie身份登录设置。为此,我确保使用我的用户名包含域名。
现在我可以在启动服务时使用我的域用户的安全上下文,导航到位于TeamCity Build Agent的Services(services.msc),并编辑其属性:
现在,重新启动TeamCity Build Agent Windows服务时,它将能够访问网络共享,因为它使用的是我的域用户的安全上下文。我现在可以访问共享驱动器上的Nuget存储库,并使构建代理在后台运行。