在CI中恢复NuGet包
本文概述了在CI(持续集成)工作流中使用基于令牌的身份验证来恢复Telerik NuGet包的最流行方法。
Telerik NuGet服务器允许你通过两种方法进行认证:
- 通过提供Telerik用户名和密码进行基本身份验证。
- 通过提供NuGet Key基于令牌的身份验证。
当您需要恢复Telerik NuGet包作为CI的一部分时,使用NuGet密钥是更安全的身份验证方式,此方法不需要您在CI工作流的任何地方提供Telerik用户名和密码。
与Telerik凭据不同,NuGet Key的作用域有限,只能与Telerik NuGet服务器一起使用。如果您的任何NuGet密钥被泄露,您可以快速删除它并创建一个新的。
生成NuGet键
1.转到Telerik帐户的Manage NuGet Keys页面。
2.先选择DOWNLOADS选项卡再管理Manage NuGet Keys。
3.要创建新密钥,请选择Generate new key按钮。
4.输入NuGet Key的名称,然后选择Generate Key。
5.要复制密钥,请选择“复制并关闭”。一旦关闭窗口,就不能再复制生成密钥了。出于安全考虑,NuGet Keys页面只显示密钥的一部分。
存储NuGet Key
提示:永远不要在源代码中签入NuGet Key或者让它以纯文本的形式公开可见,例如作为nuget.config文件中的原始键值,NuGet Key很有价值,因为坏人可以使用它来访问在你的账户下授权的NuGet包。潜在的密钥滥用可能导致对受影响账户的审查。
为了保护NuGet Key,请将其存储为一个秘密环境变量。具体步骤取决于您的工作流程:
- 在GitHub Actions中,将密钥保存为GitHub Actions Secret。进入“设置>安全>秘密>操作>添加新秘密”。
- 在Azure DevOps Classic中,将密钥保存为秘密管道变量。转到变量选项卡,然后选择管道变量。
- 在Azure DevOps YAML管道中,将键保存为秘密变量。单击YAML编辑器的Variables按钮并完成New变量表单。
如果您使用Azure DevOps服务连接而不是秘密环境变量,请在“ New NuGet service connection ”编辑器中输入“api-key”和“NuGet Key”作为密码。
使用NuGet键
在构建中使用Telerik NuGet服务器有两种流行的方式:
在项目中使用nuget.config文件
1.在你的nuget.config文件中,设置Username的值为api-key, ClearTextPassword的值为一个环境变量名:
<configuration> <packageSources> <clear/> <add key="nuget.org" value="//api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="MyTelerikFeed" value="//nuget.telerik.com/v3/index.json" protocolVersion="3"/> </packageSources> <packageSourceCredentials> <MyTelerikFeed> <add key="Username" value="api-key" /> <add key="ClearTextPassword" value="%MY_API_KEY%" /> </MyTelerikFeed> </packageSourceCredentials> ... </configuration>
2.通过使用管道/工作流秘密的值来设置MY_API_KEY环境变量。
设置MY_API_KEY环境变量的具体步骤取决于您的工作流程。
仅使用CLI命令
可以使用CLI add source(或update source)命令设置包源的凭据。如果你的CI系统不支持默认的环境变量密钥,或者你没有使用自定义的nuget.config,那么这种CLI方法是适用的。
- 在Azure DevOps中设置凭据:
dotnet nuget add source 'MyTelerikFeed' --source '//nuget.telerik.com/v3/index.json' --username 'api-key' --password '$(TELERIK_NUGET_KEY)' --configfile './nuget.config' --store-password-in-clear-text
- 在GitHub Actions中设置凭据:
dotnet nuget add source 'MyTelerikFeed' --source '//nuget.telerik.com/v3/index.json' --username 'api-key' --password '$' --configfile './nuget.config' --store-password-in-clear-text