【发布时间】:2014-09-28 04:33:41
【问题描述】:
我在 Jenkins 和 NuGet 包还原方面遇到了一些小问题。
我想做的是在 jenkins 上构建解决方案(效果很好)。我已为解决方案启用包还原,它会生成包含 NuGet.exe、NuGet.Config 和 NuGet.targets 的 .nuget 文件夹。
在 Jenkins 上,我将一些项目作为 NuGet 包发布在我们服务器上的私有包源中。我在其他项目中使用这些包,这些包应该是基于 jenkins 自己构建的。
VS 知道私有包源,它是在全局 NuGet.Config 文件(AppData 下的那个)中配置的,它没有被禁用(默认情况下)。
现在,当我尝试构建一个需要来自私有包源的包的解决方案时,构建失败,因为 jenkins 不知道它,因此在恢复包时提交了一个空的-source-参数没有被替换,因为 jenkins 不知道自定义来源。
到目前为止我所做的尝试
我已经知道将私有源添加到解决方案 NuGet.Config- 或 NuGet.Targets-file 的
Package-Source可以解决问题,但这意味着,我必须为每个解决方案都这样做想要使用 Jenkins 构建。我还通过将源添加到文件中的 package-source 标记甚至将其设置为活动源,对 AppData 和 ProgramData 中的配置文件进行了一些尝试,但这并没有帮忙
当然,提交包是一种解决方法,但这不是我们想要的结果,因为我们想忽略 scm 中的包。
基本上,我想知道是否有办法让 Jenkins 不断了解私有包源,或者操纵开发人员机器上的 NuGet 安装,以便他们生成一个 NuGet.targets-file包含私有包源。另一个可能的修复方法是 msbuild 的一个参数,我不知道。
非常感谢任何帮助!
【问题讨论】:
-
通过 msbuild 进行 Nuget 包还原在当前版本的 Nuget 中已弃用 - 我们在 Jenkins 中使用批处理步骤(nuget.exe restore -source),从而避免 Jenkins 在不同帐户中运行并搜索的问题.config 在不同的地方。
-
所以基本上,您将命令行工具(NuGet.exe)放在构建服务器上,并在实际构建运行之前由 jenkins 恢复包?
-
是的,据我所知,目前推荐这种方法。在开发人员机器上,包由 Nuget-VS-Addin(而不是 msbuild)恢复。
-
好的,既然这回答了我的问题,你可以提供一个我可以接受的实际答案;)非常感谢!
标签: jenkins msbuild nuget msbuild-task nuget-package-restore