Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Configure as ferramentas do NuGet para autenticar com o Azure Artifacts e outros repositórios do NuGet. Requer >NuGet = 4,8,5385, dotnet >= 6 ou MSBuild >= 15,8,166,59604.
Sintaxe
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#azureDevOpsServiceConnection: # string. Alias: workloadIdentityServiceConnection. Optional. Use when nuGetServiceConnections == ''. 'Azure DevOps' Service Connection.
#feedUrl: # string. Optional. Use when workloadIdentityServiceConnection != ''. Azure Artifacts URL.
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
Entradas
azureDevOpsServiceConnection
-
'Azure DevOps' Conexão de Serviço
Alias de entrada: workloadIdentityServiceConnection.
string. Opcional. Use quando nuGetServiceConnections == ''.
Se isso estiver definido, feedUrl é obrigatório. Todas as outras entradas são ignoradas.
feedUrl
-
Azure Artifacts URL
string. Opcional. Use quando workloadIdentityServiceConnection != ''.
Se isso estiver definido, workloadIdentityServiceConnection é obrigatório. Todas as outras entradas são ignoradas. Não é compatível com nuGetServiceConnections. O Feed Url deve estar no formato do índice de serviço NuGet: https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json.
forceReinstallCredentialProvider
-
reinstalar o provedor de credenciais mesmo se já estiver instalado
boolean. Valor padrão: false.
Se o provedor de credencial já estiver instalado no perfil do usuário, determina se ele foi sobrescrito pelo provedor de credencial fornecido pela tarefa. Isso pode atualizar (ou potencialmente fazer downgrade) do provedor de credenciais.
credenciais de conexão do serviço nuGetServiceConnections - para feeds fora dessa organização
string.
Opcional. A lista separada por vírgulas de conexão de serviço Do NuGet nomes para feeds fora dessa organização ou coleção. Para feeds nesta organização ou coleção, deixe isso em branco; As credenciais do build são usadas automaticamente.
Opções de controle de tarefa
Todas as tarefas têm opções de controle além de suas entradas de tarefa. Para obter mais informações, consulte as opções de Controle de e as propriedades comuns da tarefa.
Variáveis de saída
Nenhum.
Observações
Importante
Essa tarefa só é compatível com o NuGet >= 4.8.0.5385, dotnet >= 6 ou MSBuild >= 15.8.166.59604.
Quais ferramentas são compatíveis com essa tarefa?
Essa tarefa configura ferramentas que dão suporte a plug-ins de plataforma cruzada do NuGet . Atualmente, as ferramentas incluem nuget.exe, dotnet e versões recentes do MSBuild com suporte interno para restaurar pacotes NuGet.
Especificamente, essa tarefa configurará:
- nuget.exe (versão 4.8.5385 ou superior)
- dotnet / .NET 6 SDK ou superior (uma versão anterior dessa tarefa, NuGetAuthenticateV0, requer .NET Core 2.1, que não é mais suportado)
- MSBuild (versão 15.8.166.59604 ou superior)
A atualização para a versão estável mais recente é recomendada se você encontrar algum problema.
Recebo erros de "Uma tarefa foi cancelada" durante uma restauração de pacote. O que devo fazer?
Problemas conhecidos no NuGet e no Azure Artifacts Credential Provider podem causar esse tipo de erro, e atualizar para o nuget mais recente pode ajudar.
Um problema conhecido em algumas versões do nuget/dotnet pode causar esse erro, especialmente durante grandes restaurações em computadores com restrição de recursos. Esse problema é corrigido no NuGet 5.2 e .NET Core SDK 2.1.80X e 2.2.40X. Se você estiver usando uma versão mais antiga, tente atualizar sua versão do NuGet ou dotnet. A tarefa .NET Instalador de Ferramentas Core pode ser usada para instalar uma versão mais recente do SDK .NET Core.
Também há problemas conhecidos com o Azure Artifacts Credential Provider (instalado por esta tarefa), incluindo artefacts-credprovider/#77 e artefacts-credprovider/#108. Se você tiver esses problemas, verifique se tem o provedor de credenciais mais recente definindo o forceReinstallCredentialProvider de entrada para true na tarefa Autenticação do NuGet. Essa configuração também garantirá que seu provedor de credenciais seja atualizado automaticamente à medida que os problemas forem resolvidos.
Se nenhuma das opções acima resolver o problema, ative Plugin Diagnostic Logging e reporte o problema para NuGet e para o Provedor de Credenciais Azure Artifacts.
Como essa tarefa é diferente das tarefas NuGetCommand e DotNetCoreCLI?
Essa tarefa configura nuget.exe, dotnet e MSBuild para autenticarem com Azure Artifacts ou outros repositórios que exigem autenticação. Depois que essa tarefa for executada, você poderá invocar as ferramentas em uma etapa posterior (diretamente ou por meio de um script) para restaurar ou enviar pacotes por push.
As tarefas NuGetCommand e DotNetCoreCLI exigem o uso da tarefa para restaurar ou enviar pacotes, já que a autenticação do Azure Artifacts só é configurada durante a vida útil da tarefa. Isso pode impedir que você restaure ou envie pacotes por push dentro de seu próprio script. Isso também pode impedir que você passe argumentos de linha de comando específicos para a ferramenta.
A tarefa NuGetAuthenticate é a maneira recomendada de usar feeds autenticados em um pipeline.
Quando no meu pipeline devo executar essa tarefa?
Essa tarefa deve ser executada antes que você use uma ferramenta NuGet para restaurar ou enviar pacotes para uma fonte de pacotes autenticada, como o Azure Artifacts. Não há outros requisitos de ordenação. Por exemplo, essa tarefa pode ser executada com segurança tanto antes quanto depois de uma tarefa de instalação de ferramentas NuGet ou .NET Core.
Como configurar uma fonte de pacote NuGet que usa a ApiKey ("Chaves de API do NuGet"), como nuget.org?
Algumas fontes de pacote, como nuget.org usam chaves de API para autenticação ao enviar pacotes por push, em vez de username/password credenciais. Devido a limitações no NuGet, essa tarefa não pode ser usada para configurar uma conexão de serviço NuGet que usa uma chave de API.
Em vez de:
- Configurar uma variável secreta que contém a ApiKey
- Execute o push do pacote usando
nuget push -ApiKey $(myNuGetApiKey)oudotnet nuget push --api-key $(myNuGetApiKey), supondo que você nomeou a variávelmyNuGetApiKey
Meu agente está por trás de um proxy Web. O NuGetAuthenticate configurará nuget.exe, dotnet e MSBuild para usar meu proxy?
Não. Embora essa tarefa em si funcione por trás de um proxy Web seu agente tenha sido configurado para usar, ela não configura as ferramentas do NuGet para usar o proxy.
Para fazer isso, você pode:
Defina a variável de ambiente
http_proxye, opcionalmente,no_proxypara suas configurações de proxy. Consulte variáveis de ambiente da CLI do NuGet para obter detalhes. Essas variáveis são variáveis comumente usadas que outras ferramentas não NuGet (por exemplo, curl) também podem usar.cuidado:
As variáveishttp_proxyeno_proxydiferenciam maiúsculas de minúsculas em sistemas operacionais Linux e Mac e devem ser minúsculas. Tentar usar uma variável do Azure Pipelines para definir a variável de ambiente não funcionará, pois ela será convertida em maiúsculas. Em vez disso, defina as variáveis de ambiente no computador do agente auto-hospedado e reinicie o agente.Adicione as configurações de proxy ao arquivo nuget.configno nível do usuário, manualmente ou usando
nuget config -setconforme descrito na documentação de referêncianuget.config.cuidado:
As configurações de proxy (comohttp_proxy) devem ser adicionadas à configuração no nível do usuário. Eles serão ignorados se especificados em um arquivo de nuget.config diferente.
Como depurar se tenho problemas com essa tarefa?
Para obter logs detalhados do pipeline, adicione uma variável de pipeline system.debug e defina como true.
Como essa tarefa funciona?
Essa tarefa instala o Azure Artifacts Credential Provider no diretório de plugins do NuGet, caso ainda não esteja instalado. Em seguida, ele define variáveis de ambiente, como VSS_NUGET_URI_PREFIXES e VSS_NUGET_ACCESSTOKEN para configurar o provedor de credenciais. Essas variáveis permanecem definidas para o tempo de vida do trabalho. Ao restaurar ou enviar pacotes por push, uma ferramenta NuGet executa o provedor de credenciais, que usa as variáveis acima para determinar se ele deve retornar credenciais de volta à ferramenta.
Consulte a documentação do provedor de credenciais para obter mais detalhes.
Meu Pipeline precisa acessar um feed em um projeto diferente
Se o pipeline estiver em execução em um projeto diferente do projeto que hospeda o feed, você deverá configurar o outro projeto para conceder acesso de leitura/gravação ao serviço de build. Veja permissões Package em Azure Pipelines para mais detalhes.
Isso funcionará para execuções de pipeline disparadas de uma bifurcação externa?
Não. As execuções de pipeline disparadas de uma bifurcação externa não têm acesso aos segredos adequados para autenticação de feed interno. Assim, ele aparecerá como se a tarefa de autenticação fosse bem-sucedida, mas as tarefas subsequentes que exigem autenticação (como o push do Nuget) falharão com um erro nos moldes de: ##[error]The nuget command failed with exit code(1) and error(Response status code does not indicate success: 500 (Internal Server Error - VS800075: The project with id 'vstfs:///Classification/TeamProject/341ec244-e856-40ad-845c-af31c33c2152' does not exist, or you do not have permission to access it. (DevOps Activity ID: C12C19DC-642C-469A-8F58-C89F2D81FEA7)). Após a solicitação de pull ser mesclada na origem, um pipeline que é disparado desse evento será autenticado corretamente.
Atualizei do NuGetAuthenticateV0 para NuGetAuthenticateV1 e agora meu comando dotnet falha com o 401
Se você estiver atualizando do NuGetAuthenticateV0 para NuGetAuthenticateV1 e receber um erro executando um comando dotnet, procure a mensagem It was not possible to find any compatible framework version dos logs. Para usuários dotnet, o NuGetAuthenticateV1 requer .NET 6 em vez do .NET Core 2.1, que é exigido no NuGetAuthenticateV0 e não é mais suportado. Para resolver o problema, use a tarefa UseDotNet@2 antes do comando dotnet para instalar .NET 6.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Exemplos
Restaurar e enviar pacotes NuGet por push em sua organização
Se todos os feeds do Azure Artifacts que você usa estiverem na mesma organização do seu pipeline, você pode usar a tarefa NuGetAuthenticate sem especificar nenhuma entrada. Para feeds com escopo de projeto que estão em um projeto diferente do em que o pipeline está sendo executado, você deve conceder manualmente ao projeto e ao feed acesso ao serviço de build do projeto do pipeline.
nuget.config
<configuration>
<packageSources>
<!--
Any Azure Artifacts feeds within your organization will automatically be authenticated. Both dev.azure.com and visualstudio.com domains are supported.
Project scoped feed URL includes the project, organization scoped feed URL does not.
-->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyProjectFeed2" value="https://{organization}.pkgs.visualstudio.com/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOtherProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed@view}/nuget/v3/index.json" />
<add key="MyOrganizationFeed1" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
</packageSources>
</configuration>
Para usar uma conexão de serviço, especifique a conexão de serviço na entrada nuGetServiceConnections para a tarefa Autenticação do NuGet. Em seguida, você pode referenciar a conexão de serviço com -ApiKey AzureArtifacts em uma tarefa.
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source https://pkgs.dev.azure.com/{organization}/_packaging/{feed1}/nuget/v3/index.json MyProject.*.nupkg
Nos exemplos acima, OtherOrganizationFeedConnection e ThirdPartyRepositoryConnection são os nomes de conexões de serviço do NuGet configuradas e autorizadas para uso em seu pipeline e têm URLs que correspondem às do seu argumento de linha de comando ou nuget.config.
A URL do código-fonte do pacote apontando para um feed do Azure Artifacts pode ou não conter o projeto. Uma URL para um feed com escopo de projeto deve conter o projeto e uma URL para um feed com escopo da organização não deve conter o projeto. Saiba mais sobre feeds com escopo do projeto.
Restaurar e enviar pacotes NuGet por push para fora da sua organização
Se você usar feeds Azure Artifacts de outra organização ou um repositório de pacotes autenticados de terceiros, precisará configurar conexões de serviço NuGet e especificá-las na entrada nuGetServiceConnections.
Feeds dentro da sua organização Azure Artifacts também serão automaticamente autenticados.
nuget.config
<configuration>
<packageSources>
<!-- Any Azure Artifacts feeds within your organization will automatically be authenticated -->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOrganizationFeed" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
<!-- Any package source listed here whose URL matches the URL of a service connection in nuGetServiceConnections will also be authenticated.
The key name here does not need to match the name of the service connection. -->
<add key="OtherOrganizationFeed" value="https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/nuget/v3/index.json" />
<add key="ThirdPartyRepository" value="https://{thirdPartyRepository}/index.json" />
</packageSources>
</configuration>
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source "MyProjectFeed1" MyProject.*.nupkg
OtherOrganizationFeedConnection e ThirdPartyRepositoryConnection são os nomes das conexões de serviço NuGet configuradas e autorizadas para uso em seu pipeline e têm URLs que correspondem às do seu argumento de linha de comando ou nuget.config.
A URL do código-fonte do pacote apontando para um feed do Azure Artifacts pode ou não conter o projeto. Uma URL para um feed com escopo de projeto deve conter o projeto e uma URL para um feed com escopo da organização não deve conter o projeto. Saiba mais sobre feeds com escopo do projeto.
Requisitos
| Requisito | Descrição |
|---|---|
| Tipos de pipeline | YAML, build clássico, versão clássica |
| Execuções em | Agente, DeploymentGroup |
| de demandas | Nenhum |
| recursos | Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho. |
| restrições de comando | Qualquer |
| variáveis settable | Qualquer |
| Versão do agente | 2.144.0 ou superior |
| Categoria de tarefa | Pacote |
| Requisito | Descrição |
|---|---|
| Tipos de pipeline | YAML, build clássico, versão clássica |
| Execuções em | Agente, DeploymentGroup |
| de demandas | Nenhum |
| recursos | Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho. |
| restrições de comando | Qualquer |
| variáveis settable | Qualquer |
| Versão do agente | 2.120.0 ou superior |
| Categoria de tarefa | Pacote |