Continuous integration 共享NuGet存储库
我们在subversion中有以下分支(开发、QA、主干) 每个分支的根目录中都有一个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
- Development/NuGet.config
- QA/NuGet.config
- Trunk/NuGet.config
<?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包拉到其中