我们在subversion(Development,QA,Trunk)中有以下分支。
在每个分支的根目录中都有一个NuGet配置文件设置。
每个配置文件都将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:/构建/工作区/项目A /开发/共享/的NuGet /包
C:/构建/工作区/项目A / QA /共享/的NuGet /包
C:/构建/工作区/项目A /中继线/共享/的NuGet /封装
对于具有NuX引用LibraryX的每个项目,NuGet包将被拉入其自己的工作区。这意味着我们将在每个项目的每个环境之前在构建服务器上拥有数百个DLL副本。
例:
C:/构建/工作区/的项目A /Development/Shared/NuGet/Packages/LibraryX.dll
C:/构建/工作区/的项目A /QA/Shared/NuGet/Packages/LibraryX.dll
C:/构建/工作区/的项目A /Trunk/Shared/NuGet/Packages/LibraryX.dll
C:/构建/工作区/的项目B /Development/Shared/NuGet/Packages/LibraryX.dll C:/构建/工作区/的项目B /QA/Shared/NuGet/Packages/LibraryX.dll C:/构建/工作区/的项目B /Trunk/Shared/NuGet/Packages/LibraryX.dll
理想情况下,我们希望在本地计算机上开发一个中央存储库,并为构建服务器创建一个中央存储库,以便开发人员可以在本地工作而无需连接到构建服务器。他们可以独立生活。
我想过指定完整路径,但路径与本地计算机到CI服务器不同。考虑使用共享,但是当未连接到我们的服务器时,开发人员无法在本地工作。
我们如何为NuGet包设置一个中央存储库(不是源代码)?