NuGetAuthenticate@1 - Tarefa NuGet authenticate v1
Configure as ferramentas do NuGet para autenticar com os Artefatos do Azure 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:
#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
forceReinstallCredentialProvider
-
Reinstale o provedor de credenciais, mesmo que já esteja instalado
boolean
. Valor padrão: false
.
Opcional. Reinstala o provedor de credenciais no diretório de perfil de usuário, mesmo que ele já esteja instalado. Se o provedor de credenciais já estiver instalado no perfil de usuário, a tarefa determinará se ele será substituído pelo provedor de credenciais 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 o .NET Core 2.1, que não é mais 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 Provedor de Credenciais de Artefatos do Azure podem causar esse tipo de erro, e a atualização 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. Esse problema foi corrigido no NuGet 5.2e 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 SDK do .NET Core.
Também há problemas conhecidos com o Provedor de Credenciais de Artefatos do Azure (instalado por esta tarefa), incluindo artifacts-credprovider/#77 e artifacts-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, habilite de Log de Diagnóstico de Plug-in e informe o problema ao NuGet e ao do Provedor de Credenciais de Artefatos do Azure.
Qual é a diferença entre essa tarefa e as tarefas NuGetCommand e DotNetCoreCLI?
Esta tarefa configura nuget.exe, dotnet e MSBuild para autenticação com Artefatos do Azure 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.
As tarefas NuGetCommand e DotNetCoreCLI exigem o uso da tarefa para restaurar ou enviar pacotes, pois a autenticação para Artefatos do Azure só é configurada dentro do tempo de vida 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?
Essa tarefa deve ser executada antes de usar uma ferramenta NuGet para restaurar ou enviar pacotes por push para uma fonte de pacote autenticada, como Artefatos do Azure. Não existem outros requisitos de encomenda. Por exemplo, essa tarefa pode ser executada com segurança antes ou depois de uma tarefa do instalador da ferramenta 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_proxy
e, 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_proxy
eno_proxy
diferenciam maiúsculas de minúsculas nos sistemas operacionais Linux e Mac e devem ser minúsculas. A tentativa de 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 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 -set
conforme 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 Provedor de Credenciais de Artefatos do Azure no diretório de plug-ins do NuGet, se ainda não estiver 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 de pacote no de Pipelines do Azure para obter 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 usuários dotnet, NuGetAuthenticateV1 requer .NET 6 em vez de .NET Core 2.1, que é necessário em NuGetAuthenticateV0 e não é mais suportado. Para resolver o problema, use a tarefa UseDotNet@2 antes do comando dotnet para instalar o .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 de Artefatos do Azure que você usa estiverem na mesma organização que seu pipeline, você poderá usar a tarefa NuGetAuthenticate sem especificar nenhuma entrada. 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 apontando para um feed de Artefatos 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 você usar feeds de Artefatos do Azure de uma organização diferente ou usar um repositório de pacotes autenticados por terceiros, precisará configurar de conexões de serviço NuGet e especificá-las na entrada nuGetServiceConnections
.
Os feeds dentro da sua organização do Azure Artifacts também serão autenticados automaticamente.
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 apontando para um feed de Artefatos 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 |