Continuous integration 共享NuGet存储库

Continuous integration 共享NuGet存储库,continuous-integration,nuget,nuget-package-restore,Continuous Integration,Nuget,Nuget Package Restore,我们在subversion中有以下分支(开发、QA、主干) 每个分支的根目录中都有一个NuGet配置文件设置 Development/NuGet.config QA/NuGet.config Trunk/NuGet.config 每个配置文件都有一个repositoryPath,它指向自己分支中的同一文件夹。我们还为packageSources中的每个环境设置了专用源: <?xml version="1.0" encoding="utf-8"?> <configuratio

我们在subversion中有以下分支(开发、QA、主干)

每个分支的根目录中都有一个NuGet配置文件设置

  • Development/NuGet.config
  • QA/NuGet.config
  • Trunk/NuGet.config
每个配置文件都有一个repositoryPath,它指向自己分支中的同一文件夹。我们还为packageSources中的每个环境设置了专用源:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="shared\NuGet\Packages" />
  </config>

  ... 

  <packageSources>
    <add key="Private Source" value="\\Private\Development" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />        
  </packageSources>
</configuration>

... 
将NuGet软件包安装到Development/Shared/NuGet/Packages时,软件包将在本地安装,运行restore命令时,软件包将恢复到其正确的环境中

我们的持续集成服务器(Jenkins)使用nuget restore来删除丢失的引用。因此,nuget包被拉到它们的相对工作区文件夹中

示例:
C:/Builds/Workspace/ProjectA/Development/Shared/NuGet/Packages C:/Builds/Workspace/ProjectA/QA/Shared/NuGet/Packages C:/Builds/Workspace/ProjectA/Trunk/Shared/NuGet/Packages

对于每个对LibraryX有NuGet引用的项目,NuGet包都会被拉到自己的工作区中。这意味着我们将在构建服务器上为每个项目的每个环境提供数百个DLL副本

示例:
C:/Builds/Workspace/ProjectA/Development/Shared/NuGet/Packages/LibraryX.dll C:/Builds/Workspace/ProjectA/QA/Shared/NuGet/Packages/LibraryX.dll C:/Builds/Workspace/ProjectA/Trunk/Shared/NuGet/Packages/LibraryX.dll

C:/Builds/Workspace/ProjectB/Development/Shared/NuGet/Packages/LibraryX.dll C:/Builds/Workspace/ProjectB/QA/Shared/NuGet/Packages/LibraryX.dll C:/Builds/Workspace/ProjectB/Trunk/Shared/NuGet/Packages/LibraryX.dll

理想情况下,我们希望在本地计算机上开发时有一个中央存储库,并为构建服务器提供一个中央存储库,这样开发人员就可以在本地工作,而无需连接到构建服务器。他们可以独立生活

我曾考虑指定完整路径,但从本地计算机到CI服务器的路径不同。考虑过使用共享,但是如果没有连接到我们的服务器,开发人员就不能在本地工作

我们如何设置一个中心存储库(而不是源代码),以便将NuGet包拉到其中