noz*_*man 20 msbuild msbuild-task nuget jenkins nuget-package-restore
我有一些关于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中使用了配置文件,但是这也没有帮助.
cource,提交包将是一种解决方法,但这不是理想的结果,因为我们想忽略scm中的包.
基本上,我想知道是否有办法让Jenkins不断了解私有包源,或者操纵开发人员机器上的NuGet安装,以便生成NuGet.targets
包含私有包源的-file. .另一个可能的修复是msbuild的参数,我不知道.
任何帮助是极大的赞赏!
fra*_*och 23
总结(并扩展)我的意见:
在当前版本的Nuget(2.7及更高版本)中不推荐通过msbuild进行Nuget包恢复
我们在Jenkins中使用批处理步骤
nuget.exe restore SOLUTIONTOBUILD.sln -source http://nugetserver...
并避免Jenkins服务在不同帐户中运行并在不同位置搜索.config的问题.
在开发人员计算机上,这些包由Nuget-VS-Addin(而不是msbuild)恢复,因此不要忘记撤消旧的Nuget-VS-Addin可能已应用于项目文件的更改.
更多信息可以在Nuget-Docs中找到
Fáb*_*ira 11
此问题的另一个解决方案是将自定义NuGet.config和可执行文件添加到Jenkins服务器上的目录中,并添加构建步骤以使用自定义配置运行nuget.
C:\nuget\nuget.exe update "%WORKSPACE%\Project.sln" -ConfigFile C:\nuget\NuGet.config
Run Code Online (Sandbox Code Playgroud)
添加自定义包源的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>
Run Code Online (Sandbox Code Playgroud)
独立的nuget.exe可以在这里下载
通过更改相同的配置文件,此方法可以更轻松地向所有jenkins作业添加自定义源.
归档时间: |
|
查看次数: |
13566 次 |
最近记录: |