NuGetAuthenticate@1 – Tarefa de autenticação do NuGet v1
Configure as ferramentas do NuGet para autenticar com o Azure Artifacts 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:
#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
forceReinstallCredentialProvider
-
reinstalar o provedor de credenciais mesmo se já estiver instalado
boolean
. Valor padrão: false
.
Opcional. Reinstala o provedor de credenciais para o diretório de perfil do usuário, mesmo que ele já esteja instalado. Se o provedor de credenciais já estiver instalado no perfil do usuário, a tarefa determinará se ele é substituído com o provedor de credenciais 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)
- O SDK do dotnet/.NET 6 ou superior (uma versão anterior desta tarefa, NuGetAuthenticateV0, requer o .NET Core 2.1, que não tem mais suporte)
- 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 Provedor de Credenciais do Azure Artifacts 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 foi corrigido no NuGet 5.2e no SDK do .NET Core 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 do Instalador de Ferramentas do .NET Core 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, 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 nenhum dos dois acima resolver o problema, habilite de Log de Diagnóstico de Plug-in e relate o problema para Do NuGet e o provedor de credenciais do Azure Artifacts do .
Como essa tarefa é diferente das tarefas NuGetCommand e DotNetCoreCLI?
Essa tarefa configura nuget.exe, dotnet e MSBuild para autenticar com o 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 por push, pois a autenticação no Azure Artifacts só é configurada dentro do tempo de vida 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 de usar uma ferramenta NuGet para restaurar ou enviar pacotes por push para uma fonte de pacote autenticada, como o Azure Artifacts. Não há outros requisitos de ordenação. Por exemplo, essa tarefa pode ser executada com segurança antes ou depois de uma tarefa do instalador de ferramentas do NuGet ou do .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_proxy
e, opcionalmente,no_proxy
para 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_proxy
eno_proxy
diferenciam maiúsculas de minúsculas em 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úscula. 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 -set
conforme 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 provedor de credenciais do Azure Artifacts no diretório de plug-ins do NuGet se ele 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 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. Consulte permissões de pacote no Azure Pipelines para obter 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, NuGetAuthenticateV1 requer .NET 6 em vez do .NET Core 2.1, que é necessário no NuGetAuthenticateV0 e não tem mais suporte. 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
Restaurar e enviar pacotes NuGet por push em sua organização
Se todos os feeds do Azure Artifacts usados estiverem na mesma organização que o pipeline, você poderá 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 de origem do pacote que aponta 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 do Azure Artifacts de uma organização diferente ou usar um repositório de pacote autenticado de terceiros, precisará configurar conexões de serviço do NuGet e especificá-las na entrada nuGetServiceConnections
.
Os feeds em 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 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 de origem do pacote que aponta 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 | Agent, 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 | Agent, 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 |