F#/FAKE NuGet私有Feed身份验证

4

我正在尝试使用FAKE作为构建脚本的一部分来恢复我的NuGet软件包,但我需要使用一个需要身份验证的私有源(Artifactory)。

在寻找解决方案时,我发现了这个问题。 https://github.com/fsharp/FAKE/issues/119

它表明该问题已通过提交得到解决,但我无法确定提交的位置或提交进入了哪个版本,并且似乎没有任何记录的使用方式。

Target "RestorePackages" (fun _ -> 
     "./**/*.sln"
     |> RestoreMSSolutionPackages (fun p ->
         { p with
             Sources = "{url}" :: p.Sources
             OutputPath = outputDir
             Retries = 4 })
 )

我查看了源代码并找到了上面的片段,但似乎没有与身份验证相关的参数,除非它们被传递到Sources参数中?
有人有关于如何让FAKE包恢复与身份验证一起工作的经验或知识吗?

你不能将 {url} 设置为预认证的 NuGet 源吗? - forki23
1
你考虑过使用Paket吗?你可以直接从F#中使用它,并且它支持经过身份验证的源。http://fsprojects.github.io/Paket/nuget-dependencies.html - Fyodor Soikin
@FyodorSoikin 很有趣,从未听说过Paket。在FAKE构建脚本中是否有Paket的工作示例? - devfunkd
很遗憾,我自己不知道这样的例子,但我相信一定存在。 - Fyodor Soikin
2个回答

3

您可以将凭据添加到您的nuget.config中,并在还原时指定它。

{ p with
     Sources = p.Sources
     OutputPath = outputDir
     Retries = 4 
     ConfigFile = Some "./tools/nuget/nuget.config" }

然后在你的配置文件中添加以下内容。
 <packageSource>
     <add key="feedName" value="http://example.com/Feed.svc" />
 </packageSource>
 <packageSourceCredentials>
     <feedName>
         <add key="Username" value="xxx" />
         <add key="ClearTextPassword" value="secret" />
     </feedName>
 </packageSourceCredentials>

https://docs.nuget.org/consume/nuget-config-settings


对于所有正在阅读此内容的人,请看一下Paket。它比NuGet工作得更好、更快。 - albertjan

1
同时,“ConfigFile”字段不再可用。但是,您应该能够利用nuget.config文件的分层结构(在此处解释:https://docs.nuget.org/consume/nuget-config-file)。
请还参考“软件包源的凭据”章节,以加密方式存储密码。

顺便说一下,我看到引导支持(http://fsharp.github.io/FAKE/apidocs/fake-boot.html)支持使用凭据作为私有源的参数... 但是我在RestorePackageHelper中找不到这样的支持http://fsharp.github.io/FAKE/apidocs/fake-restorepackagehelper.html。 - Maurice CGP Peters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接