我们如何使用Cake构建来针对安全的NuGet服务器进行身份验证?我们正在使用CakeBuild自动化我们的构建,我们使用来自nuget.org的NuGet包,但我们也有我们自己的NuGetFeedServer,它具有用于访问的用户名/密码身份验证。我们如何利用带有身份验证的自定义NuGet源服务器来使用CakeBuild?Cake使用NuGet.exe安装工具,NuGet.exe和NuGet别名。除非您在#tool/#addin指令中指定源或提供给NuGet别名,否则NuGet.exe将在当前路径中查找nuget.config并以当前用户的全局设置(%AppData%NuGetNuGet.config)结束.您有几个选项,如果您不想更改Cake文件或存储库中的任何内容,那么您可以全局存储您的用户凭据,NuGet.exe将选择这些示例:nugetsourcesUpdate-Name[nameofsource]-Source[uritoyoursource]-UserName[yourusername]-Password[yourpassword]免责声明某些版本的NuGet.exe和dotnetCLI存在加密密码问题,解决方法是像这样添加-StorePasswordInClearText:nugetsourcesUpdate-Name[来源名称]-Source[uritoyoursource]-UserName[你的用户名]-Password[你的密码]-StorePasswordInClearText然后你的凭据将以纯文本形式保存,缺点是你的凭据以纯文本形式保存。您还可以通过为#tool/#addin指令和NuGet别名指定特定来源来覆盖nuget.config设置。#tool指令下面是一个示例,用于说明为#tool指令提供源代码#tool"NUnit.ConsoleRunner"或#toolnuget:?package=NUnit.ConsoleRunner&version=3.4.0变为#toolnuget:[source]?package=NUnit.ConsoleRunner或#toolnuget:[source]?package=NUnit.ConsoleRunner&version=3.4.0和官方V2nuget源#toolnuget:https://www.nuget.org/api/v2?package=NUnit。ConsoleRunner或#toolnuget:https://www.nuget.org/api/v2?package=NUnit.ConsoleRunner&version=3.4.0#addindirective下面是一个示例,用于说明为#addin指令#addin"Cake提供源代码。Slack”或#addinnuget:?package=Cake.Slack&version=0.4.0变为#addinnuget:[source]?package=Cake.Slack或#addinnuget:[source]?package=Cake.Slack&version=0.4。0对于官方V2nuget提要#addinnuget:https://www.nuget.org/api/v2?package=Cake.Slack或#addinnuget:https://www.nuget.org/api/v2?package=Cake.Slack&version=0.4.0NuGetAliasesNuGetAlias有像NuGetAddSource和NuGetHasSource这样的命令可以直接使用source,如果你想在NuGet恢复步骤之前将source添加到CI,这些是很棒的:varsource=new{Name=EnvironmentVariable("PRIVATE_FEED_NAME"),Source=EnvironmentVariable("PRIVATE_FEED_SOURCE"),ApiUserName=EnvironmentVariable("PRIVATE_FEED_USERNAME"),ApiKey=EnvironmentVariable("PRIVATE_FEED_PASSWORD")};如果(!NuGetHasSource(source.SourceUrlAdd)){Name,source.SourceUrl,newNuGetSourcesSettings{UserName=source.ApiUserName,Password=source.ApiKey});上面只会将源nuget.config添加到您现有的nuget.config,但您也可以覆盖NuGetInstall和NuGetRestore别名NuGet源代码NuGetInstallNuGetInstall别名有一个重载,它采用NuGetInstallSettings工具设置类,它有一个Source属性,您可以使用它来覆盖使用的提要,例如:NuGetInstall("MyNugetPackage",newNuGetInstallSettings{Source=new[]{"https://api.nuget.org/v3/index.json"}});NuGetRestore类似地,NuGetRestore别名具有重载,允许您使用Source属性指定NuGetRestoreSettings,您可以使用该属性来覆盖使用的提要,例如:varsolutions=GetFiles("./**/*.sln");//恢复所有NuGet包。foreach(varsolutioninsolutions){Information("Restoring{0}",solution);NuGetRestore(解决方案,newNuGetRestoreSettings{Source=new[]{"https://api.nuget.org/v3/index.json"}});}结论有几种方法可以解决您的问题。此外,您可以通过在计算机上配置多个源时指定源来提高NuGet恢复/安装性能,但只使用当前项目的官方项目,然后跳过所有配置源的查找并直接转到源。但是,如果您的提要具有身份验证,则您将需要为使用nuget.exe或NuGetAddSource别名的任何人添加凭据。对于那些使用MyGet的人,它有预先验证的urls:你可以在不添加源的情况下使用,但只需为Restore/Install指定Source属性,这是敏感信息,所以不要将它们存储在构建脚本中,而是作为环境变量.以上是C#学习教程:HowdoweuseCakebuildstoauthenticationagainstasecureNuGetserver?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
