Conectar-se a um feed do Azure Artifacts (dotnet)

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

O Azure Artifacts permite que os desenvolvedores publiquem pacotes sem dificuldades nos feeds e os compartilhem de forma privada ou pública, dependendo das configurações de visibilidade do feed. Este guia orienta você na configuração do projeto e na autenticação com o feed do Azure Artifacts.

Pré-requisitos

Produto Requisitos
Azure DevOps - Uma organização do Azure DevOps.
- Um projeto do Azure DevOps .
- Um feed do Azure Artifacts.
- Baixe e instale o SDK .NET versão 9.0.200 ou posterior.

Configurar o provedor de credenciais Azure Artifacts

Para autenticar com o feed, primeiro você deve instalar o provedor de credenciais Azure. Usando o instalador de ferramentas incluído no dotnet, você pode instalar o provedor de credenciais da CLI usando o seguinte comando:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

Se o nuget.config no nível do repositório estiver configurado para usar apenas fontes do Azure Artifacts, execute o comando de instalação fora desse diretório ou defina explicitamente nuget.org como a origem:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

Opcionalmente, fixe a ferramenta em uma versão principal específica (por exemplo, em imagens de contêiner em que a reprodutibilidade é importante):

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

Na primeira vez que você executar uma operação que exija autenticação, você deve autenticar por:

  • Executando com --interactive para que o dotnet possa solicitar que você se autentique.
  • Fornecendo credenciais por meio de variáveis de ambiente (por exemplo, em cenários autônomos).

Se a autorização interativa estiver disponível, navegue até o diretório do projeto e execute:

dotnet restore --interactive

Este comando faz login e obtém um token. Depois que a entrada for bem-sucedida, você poderá executar comandos autenticados sem --interactive até que o token expire. Consulte Session token cache locations para obter mais detalhes.

Conectar-se a um feed

  1. Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.

  2. Selecione Conectar ao feed e, em seguida, escolha dotnet na seção NuGet.

  3. Adicione um arquivo nuget.config ao seu projeto. Coloque-o na mesma pasta que o arquivo .csproj ou .sln e cole o snippet fornecido na seção de instalação do Project nele. Seu arquivo nuget.config deve ser semelhante ao seguinte:

    • Feed do projeto com escopo:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • Feed da organização com escopo:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Entre em sua coleção do Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.

  3. Selecione Conectar ao Feed e, em seguida, selecione dotnet à esquerda.

  4. Adicione um arquivo nuget.config ao seu projeto. Coloque-o na mesma pasta que o arquivo .csproj ou .sln e cole o snippet fornecido na seção de instalação do Project nele.

    Uma captura de tela mostrando como se conectar a um feed no Azure DevOps Server 2020 e 2022.

Autenticar usando entidades de serviço

Você pode usar um princípio de serviço para autenticar com o feed do Azure Artifacts. Para fazer isso, defina a variável de ambiente ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS , conforme mostrado abaixo.

Essa variável deve definir a URL do feed, a ID do aplicativo (cliente) do principal de serviço e o nome do sujeito do certificado ou o caminho para o arquivo de certificado (apenas um dos dois é necessário).

$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>"
        }
    ]
}
'@