在CI中恢復NuGet包
本文概述了在CI(持續(xù)集成)工作流中使用基于令牌的身份驗證來恢復Telerik NuGet包的最流行方法。
Telerik NuGet服務器允許你通過兩種方法進行認證:
- 通過提供Telerik用戶名和密碼進行基本身份驗證。
- 通過提供NuGet Key基于令牌的身份驗證。
當您需要恢復Telerik NuGet包作為CI的一部分時,使用NuGet密鑰是更安全的身份驗證方式,此方法不需要您在CI工作流的任何地方提供Telerik用戶名和密碼。
與Telerik憑據(jù)不同,NuGet Key的作用域有限,只能與Telerik NuGet服務器一起使用。如果您的任何NuGet密鑰被泄露,您可以快速刪除它并創(chuàng)建一個新的。
生成NuGet鍵
1.轉(zhuǎn)到Telerik帳戶的Manage NuGet Keys頁面。
2.先選擇DOWNLOADS選項卡再管理Manage NuGet Keys。
3.要創(chuàng)建新密鑰,請選擇Generate new key按鈕。
4.輸入NuGet Key的名稱,然后選擇Generate Key。
5.要復制密鑰,請選擇“復制并關(guān)閉”。一旦關(guān)閉窗口,就不能再復制生成密鑰了。出于安全考慮,NuGet Keys頁面只顯示密鑰的一部分。
存儲NuGet Key
提示:永遠不要在源代碼中簽入NuGet Key或者讓它以純文本的形式公開可見,例如作為nuget.config文件中的原始鍵值,NuGet Key很有價值,因為壞人可以使用它來訪問在你的賬戶下授權(quán)的NuGet包。潛在的密鑰濫用可能導致對受影響賬戶的審查。
為了保護NuGet Key,請將其存儲為一個秘密環(huán)境變量。具體步驟取決于您的工作流程:
- 在GitHub Actions中,將密鑰保存為GitHub Actions Secret。進入“設(shè)置>安全>秘密>操作>添加新秘密”。
- 在Azure DevOps Classic中,將密鑰保存為秘密管道變量。轉(zhuǎn)到變量選項卡,然后選擇管道變量。
- 在Azure DevOps YAML管道中,將鍵保存為秘密變量。單擊YAML編輯器的Variables按鈕并完成New變量表單。
如果您使用Azure DevOps服務連接而不是秘密環(huán)境變量,請在“ New NuGet service connection ”編輯器中輸入“api-key”和“NuGet Key”作為密碼。
使用NuGet鍵
在構(gòu)建中使用Telerik NuGet服務器有兩種流行的方式:
在項目中使用nuget.config文件
1.在你的nuget.config文件中,設(shè)置Username的值為api-key, ClearTextPassword的值為一個環(huán)境變量名:
<configuration> <packageSources> <clear/> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="MyTelerikFeed" value="https://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.通過使用管道/工作流秘密的值來設(shè)置MY_API_KEY環(huán)境變量。
設(shè)置MY_API_KEY環(huán)境變量的具體步驟取決于您的工作流程。
僅使用CLI命令
可以使用CLI add source(或update source)命令設(shè)置包源的憑據(jù)。如果你的CI系統(tǒng)不支持默認的環(huán)境變量密鑰,或者你沒有使用自定義的nuget.config,那么這種CLI方法是適用的。
- 在Azure DevOps中設(shè)置憑據(jù):
dotnet nuget add source 'MyTelerikFeed' --source 'https://nuget.telerik.com/v3/index.json' --username 'api-key' --password '$(TELERIK_NUGET_KEY)' --configfile './nuget.config' --store-password-in-clear-text
- 在GitHub Actions中設(shè)置憑據(jù):
dotnet nuget add source 'MyTelerikFeed' --source 'https://nuget.telerik.com/v3/index.json' --username 'api-key' --password '$' --configfile './nuget.config' --store-password-in-clear-text