Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Artifacts 使开发人员能够从各种源(例如专用源和公共注册表)下载 NuGet 包。 可以将包发布到专用源并控制访问权限,或者创建公共源以公开共享它们。 本文将指导您对您的 Azure Artifacts 包源进行身份验证。
先决条件
产品 | 要求 |
---|---|
Azure DevOps | - 一个 Azure DevOps 组织。 - Azure DevOps 项目。 - Azure Artifacts 源。 - 下载并安装 Azure Artifacts 凭据提供程序。 - 安装最新的 NuGet 版本。 |
项目设置
登录到 Azure DevOps 组织,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择 “连接到源”,然后选择左侧的 NuGet.exe。
将 nuget.config 文件添加到项目,将其放置在 csproj 或 sln 文件所在的文件夹中,然后将提供的代码片段粘贴到其中。 nuget.config 文件应如下所示:
项目作用域的源:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" /> </packageSources> </configuration>
组织作用域的源:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" /> </packageSources> </configuration>
登录到 Azure DevOps 集合,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择连接到源,然后从左侧导航窗格中选择 NuGet.exe。
将 nuget.config 文件添加到项目,将其放置在 与 csproj 或 sln 文件相同的文件夹中,然后将 “项目设置 ”部分中提供的代码片段粘贴到文件中。
注释
Azure Artifacts 凭据提供程序需要 NuGet 版本4.8.0.5385
或更高版本。 为了获得最佳性能,Azure Artifacts 建议使用 NuGet 版本 5.5.x
或更高版本,因为它包括与取消和超时相关的关键 bug 修复。
旧项目设置
如果使用的是旧版 NuGet,请按照以下说明连接到源:
登录到 Azure DevOps 组织,然后导航到项目。
选择项目,然后从下拉菜单中选择源。
选择连接到源,然后从左侧选择NuGet.exe。
从 “项目设置 ”部分复制源 URL,然后替换为
/v3/index.json
/v2
。 更新的源 URL 应如下所示:项目作用域的源:
https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2
组织作用域的源:
https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2
创建个人访问令牌,确保将其限定为想要访问的正确组织,然后根据需要选择以下范围之一:打包(读取)、打包(读取和写入)或打包(读取、写入和管理)。
在命令提示符窗口中运行以下命令,将馈送源添加到 nuget.config 文件:
nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <ANY_STRING_BUT_NOT_NULL> -password <YOUR_PERSONAL_ACCESS_TOKEN>
如果组织连接到 Microsoft Entra ID,必须先使用 AD 凭据进行身份验证,然后使用 setapikey 命令添加个人访问令牌:
nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <AZURE_ACTIVE_DIRECTORY_USERNAME> -password <AZURE_ACTIVE_DIRECTORY_PASSWORD> nuget setapikey <YOUR_PERSONAL_ACCESS_TOKEN> -source <SOURCE_URL>
使用服务主体进行身份验证
若要使用服务主体通过 Azure Artifacts 馈送进行身份验证,请根据下述示例设置 ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS 环境变量。
这指定你的源 URL、服务主体的应用程序(客户端)ID,以及服务主体证书的主题名称或文件路径(这两个选项中只需其中一个)。
$env:ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS = @'{
"endpointCredentials": [
{
"endpoint": "<FEED_URL>",
"clientId": "<SERVICE_PRINCIPAL_APPLICATION_(CLIENT)_ID>",
"clientCertificateSubjectName": "<SERVICE_PRINCIPAL_CERTIFICATE_NAME>",
"clientCertificateFilePath": "<SERVICE_PRINCIPAL_CERTIFICATE_PATH>"
}
]
}
'@