让Jenkins知道定制的NuGet包源代码
我有一个关于Jenkins和NuGet包恢复的小问题 我试图做的是在jenkins上构建解决方案(它工作得非常好)。我已经为解决方案启用了包还原,该解决方案生成了包含nuget.exe、nuget.Config和nuget.targets的.nuget文件夹 在Jenkins上,我在服务器上的一个私有包源中以NuGet包的形式脉动一些项目。我在其他项目中使用这些软件包,这些软件包应该建立在jenkins自己的基础上 VS知道私有包源,它在全局NuGet.Config文件(AppData下的文件)中配置,并且未禁用(默认情况下) 现在,当我尝试构建一个需要来自私有包源的包的解决方案时,构建失败,因为jenkins不知道它,因此在恢复包时提交了一个空的让Jenkins知道定制的NuGet包源代码,jenkins,msbuild,nuget,msbuild-task,nuget-package-restore,Jenkins,Msbuild,Nuget,Msbuild Task,Nuget Package Restore,我有一个关于Jenkins和NuGet包恢复的小问题 我试图做的是在jenkins上构建解决方案(它工作得非常好)。我已经为解决方案启用了包还原,该解决方案生成了包含nuget.exe、nuget.Config和nuget.targets的.nuget文件夹 在Jenkins上,我在服务器上的一个私有包源中以NuGet包的形式脉动一些项目。我在其他项目中使用这些软件包,这些软件包应该建立在jenkins自己的基础上 VS知道私有包源,它在全局NuGet.Config文件(AppData下的文件)
-source
-参数,因为jenkins不知道自定义源
我到目前为止所做的尝试
包源代码中可以解决问题,但这意味着,对于我想使用Jenkins构建的每个解决方案,我都必须这样做
NuGet.targets
-文件。另一个可能的修复方法是msbuild的参数,我不知道
非常感谢您的帮助 总结(并扩展)我的评论:
在当前版本的Nuget(2.7及更高版本)中,不推荐通过msbuild进行Nuget包还原 我们在Jenkins中使用批处理步骤
nuget.exe还原SOLUTIONTOBUILD.sln-源代码http://nugetserver...
从而避免Jenkins服务在不同的帐户中运行并在不同的位置搜索.config的问题
在开发人员计算机上,包由Nuget VS加载项(而不是msbuild)还原,因此不要忘记撤消旧Nuget VS加载项可能已应用于项目文件的更改
可以在中找到更多信息此问题的另一个解决方案是将自定义的NuGet.config和可执行文件添加到Jenkins服务器上的一个目录中,并添加一个构建步骤以使用自定义配置运行NuGet
C:\nuget\nuget.exe update "%WORKSPACE%\Project.sln" -ConfigFile C:\nuget\NuGet.config
添加自定义包源的NuGet.config如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="My Custom Package Source" value="http://localhost/guestAuth/app/nuget/v1/FeedService.svc/" />
</packageSources>
<activePackageSource>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</activePackageSource>
</configuration>
通过更改相同的配置文件,这种方法可以更轻松地将自定义提要添加到所有jenkins作业中。[Windows]请确保jenkins服务帐户具有查看nuget包位置的权限。在我的例子中,我使用的是一个本地管理员帐户,该帐户没有导航NuGet文件夹的网络位置所需的域权限。另外,请确保包的嵌套不要太深。Nuget package restore via msbuild在当前版本的Nuget中不受欢迎-我们在Jenkins(Nuget.exe restore-source)中使用批处理步骤,从而避免Jenkins在不同帐户中运行并在不同位置搜索.config的问题。因此,基本上,您将命令行工具(NuGet.exe)放在生成服务器上,并在实际生成运行之前由jenkins还原包?是的,据我所知,目前推荐使用此方法。在开发人员的机器上,包是由Nuget VS Addin(而不是msbuild)还原的非常感谢你!你不知道我花了多长时间才找到你刚才在回答中提到的东西。非常感谢。我必须添加以下命令行命令:-RepositoryPath%WORKSPACE%\\packages
和
之间的区别是什么?这是我为jenkins的所有工作所做的最好的解决方案。同意,这是迄今为止最好的解决方案。其他源代码以分号作为分隔符。你可能需要报价。