Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Configure as ferramentas NuGet para autenticarem com o Artefactos do Azure e outros repositórios 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.
Insumos
azureDevOpsServiceConnection
-
'Azure DevOps' Ligação ao Serviço
Alias de entrada: workloadIdentityServiceConnection.
string. Opcional. Use quando nuGetServiceConnections == ''.
Se isto estiver definido, feedUrl é obrigatório. Todas as outras entradas são ignoradas.
feedUrl
-
Artefactos do Azure URL
string. Opcional. Use quando workloadIdentityServiceConnection != ''.
Se isto estiver definido, workloadIdentityServiceConnection é obrigatório. Todas as outras entradas são ignoradas. Não é compatível com nuGetServiceConnections. O URL do feed 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
-
Reinstale o provedor de credenciais, mesmo que já esteja instalado
boolean. Valor padrão: false.
Se o fornecedor de credenciais já estiver instalado no perfil de utilizador, determina-se se este foi sobrescrito pelo fornecedor de credencial fornecido pela tarefa. Isso pode atualizar (ou potencialmente fazer downgrade) do provedor de credenciais.
nuGetServiceConnections
-
credenciais de conexão de serviço para feeds fora desta organização
string.
Opcional. A lista separada por vírgulas de conexão de serviço 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 da compilação são usadas automaticamente.
Opções de controlo de tarefas
Todas as tarefas têm opções de controle, além de suas entradas de tarefas. Para obter mais informações, consulte Opções de controle de e propriedades de tarefas comuns.
Variáveis de saída
Nenhuma.
Comentários
Importante
Esta tarefa só é compatível com NuGet >= 4.8.0.5385, dotnet >= 6 ou MSBuild >= 15.8.166.59604.
Que ferramentas são compatíveis com esta tarefa?
Esta tarefa configura ferramentas que suportam plug-ins de plataforma cruzada NuGet. Atualmente, as ferramentas incluem nuget.exe, dotnet e versões recentes do MSBuild com suporte interno para restaurar pacotes NuGet.
Especificamente, esta tarefa irá configurar:
- nuget.exe (versão 4.8.5385 ou superior)
- dotnet / .NET 6 SDK ou superior (uma versão anterior desta tarefa, NuGetAuthenticateV0, requer .NET Core 2.1, que já não é suportado)
- MSBuild (versão 15.8.166.59604 ou superior)
Recomenda-se atualizar para a versão estável mais recente se você encontrar algum problema.
Recebo erros de "Uma tarefa foi cancelada" durante a restauração de um pacote. O que devo fazer?
Problemas conhecidos no NuGet e no Artefactos do Azure Credential Provider podem causar este 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 máquinas com restrição de recursos. Este problema está resolvido no NuGet 5.2 e no .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 Core Tool Installer pode ser usada para instalar uma versão mais recente do .NET Core SDK.
Existem também problemas conhecidos com o Fornecedor de Credenciais Artefactos do Azure (instalado por esta tarefa), incluindo artefacts-credprovider/#77 e artefacts-credprovider/#108. Se você tiver esses problemas, certifique-se de ter o provedor de credenciais mais recente definindo o forceReinstallCredentialProvider de entrada para true na tarefa NuGet Authenticate. 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 ao NuGet e ao Fornecedor de Credenciais Artefactos do Azure.
Qual é a diferença entre essa tarefa e as tarefas NuGetCommand e DotNetCoreCLI?
Esta tarefa configura nuget.exe, dotnet e MSBuild para autenticarem com Artefactos do Azure ou outros repositórios que exijam 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.
As tarefas NuGetCommand e DotNetCoreCLI requerem o uso da tarefa para restaurar ou enviar pacotes, uma vez que a autenticação do Artefactos do Azure só é configurada durante a vida útil da tarefa. Isso pode impedir que você restaure ou envie pacotes por push dentro do seu próprio script. Ele 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 devo executar esta tarefa no meu pipeline?
Esta tarefa deve ser executada antes de usar uma ferramenta NuGet para restaurar ou enviar pacotes para uma fonte de pacotes autenticada, como o Artefactos do Azure. Não existem outros requisitos de encomenda. Por exemplo, esta tarefa pode ser executada em segurança antes ou depois de uma tarefa de instalação de ferramentas NuGet ou .NET Core.
Como configuro uma fonte de pacote NuGet que usa ApiKey ("chaves de API NuGet"), como nuget.org?
Algumas fontes de pacotes, como nuget.org usam chaves de API para autenticação ao enviar pacotes, 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 disso:
- Configurar uma variável secreta que contém a ApiKey
- Execute o push de 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 da web. O NuGetAuthenticate configurará nuget.exe, dotnet e MSBuild para usar meu proxy?
Não. Embora essa tarefa em si funcione atrás de um proxy da Web seu agente tenha sido configurado para usá, ela não configura as ferramentas do NuGet para usar o proxy.
Para tal, pode:
Defina a variável de ambiente
http_proxye, opcionalmente,no_proxyàs suas configurações de proxy. Consulte de variáveis de ambiente da CLI do NuGet para obter detalhes. Essas variáveis são comumente usadas que outras ferramentas não-NuGet (por exemplo, curl) também podem usar.Atenção:
As variáveishttp_proxyeno_proxydiferenciam maiúsculas de minúsculas nos 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 será convertida para maiúsculas. Em vez disso, defina as variáveis de ambiente na máquina do agente auto-hospedado e reinicie o agente.Adicione as configurações de proxy ao arquivo nuget.configde nível de usuário, manualmente ou usando
nuget config -setconforme descrito na documentação do de referêncianuget.config.Atenção:
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 nuget.config diferente.
Como depurar se tiver problemas com esta tarefa?
Para obter logs detalhados do pipeline, adicione uma variável de pipeline system.debug e defina como true.
Como funciona esta tarefa?
Esta tarefa instala o Fornecedor de Credenciais Artefactos do Azure no diretório de plugins 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, uma ferramenta NuGet executa o provedor de credenciais, que usa as variáveis acima para determinar se ele deve retornar as 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 sendo executado 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 compilação. Consulte permissões Package em Azure Pipelines para mais detalhes.
Isso funcionará para execuções de pipeline que são acionadas a partir de uma bifurcação externa?
Não. As execuções de pipeline que são acionadas a partir de uma bifurcação externa não têm acesso aos segredos adequados para autenticação de feed interno. Assim, parecerá que a tarefa de autenticação foi bem-sucedida, mas as tarefas subsequentes que exigem autenticação (como o Nuget push) falharão com um erro na linha 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)). Depois que a solicitação pull for mesclada na origem, um pipeline acionado a partir desse evento será autenticado corretamente.
Eu atualizei de NuGetAuthenticateV0 para NuGetAuthenticateV1 e agora meu comando dotnet falha com 401
Se você estiver atualizando de NuGetAuthenticateV0 para NuGetAuthenticateV1 e receber um erro ao executar um comando dotnet, procure a mensagem It was not possible to find any compatible framework version nos logs. Para utilizadores dotnet, o NuGetAuthenticateV1 requer .NET 6 em vez do .NET Core 2.1, que é exigido no NuGetAuthenticateV0 e já não é 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
Restaure e envie pacotes NuGet por push em sua organização
Se todos os feeds Artefactos do Azure que usas estiverem na mesma organização do teu pipeline, podes usar a tarefa NuGetAuthenticate sem especificar quaisquer entradas. Para feeds de escopo de projeto que estão em um projeto diferente de onde o pipeline está sendo executado, você deve conceder manualmente ao projeto e ao feed acesso ao serviço de compilação 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 de nuGetServiceConnections para a tarefa NuGet Authenticate. Em seguida, você pode fazer referência à 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 NuGet que foram configuradas e autorizadas para uso em seu pipeline e têm URLs que correspondem às do argumento nuget.config ou linha de comando.
A URL de origem do pacote que aponta para um feed do Artefactos do Azure pode ou não conter o projeto. Uma URL para um feed de escopo de projeto deve conter o projeto e uma URL para um feed de escopo da organização não deve conter o projeto. Saiba mais sobre feeds com escopo de projeto.
Restaurar e enviar pacotes NuGet para fora da sua organização
Se usar Artefactos do Azure feeds de outra organização ou um repositório de pacotes autenticados de terceiros, terá de configurar ligações de serviço NuGet e especificá-las na entrada nuGetServiceConnections.
Os feeds dentro da sua organização Artefactos do Azure 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 de conexões de serviço NuGet que foram configuradas e autorizadas para uso em seu pipeline e têm URLs que correspondem às do argumento nuget.config ou linha de comando.
A URL de origem do pacote que aponta para um feed do Artefactos do Azure pode ou não conter o projeto. Uma URL para um feed de escopo de projeto deve conter o projeto e uma URL para um feed de escopo da organização não deve conter o projeto. Saiba mais sobre feeds com escopo de projeto.
Requerimentos
| Exigência | Descrição |
|---|---|
| Tipos de pipeline | YAML, Construção clássica, Versão clássica |
| Funciona em | Agente, DeploymentGroup |
| Exigências | Nenhum |
| Capacidades | Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho. |
| Restrições de comando | Qualquer |
| Variáveis configuráveis | Qualquer |
| Versão do agente | 2.144.0 ou superior |
| Categoria de tarefa | Embalagem |
| Exigência | Descrição |
|---|---|
| Tipos de pipeline | YAML, Construção clássica, Versão clássica |
| Funciona em | Agente, DeploymentGroup |
| Exigências | Nenhum |
| Capacidades | Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes no trabalho. |
| Restrições de comando | Qualquer |
| Variáveis configuráveis | Qualquer |
| Versão do agente | 2.120.0 ou superior |
| Categoria de tarefa | Embalagem |