Как использовать канал частных пакетов в Azure DevOps?

#azure-devops #nuget

#azure-devops #nuget

Вопрос:

У меня есть частный пакет в Azure DevOps, который я использую в проекте API.

Для этого у меня есть в этом проекте API следующее:

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="mypack" value="https://pkgs.dev.azure.com/org/_packaging/mypack/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <mypack>
      <add key="Username" value="EmailUserInDevOps" />
      <add key="ClearTextPassword" value="TokenFromDevOps" />
    </mypack>
  </packageSourceCredentials>
</configuration>
  

Он отлично работает на моей машине разработки…

Но я также хочу создать проект API с использованием DevOps.

Для этого я подключаю DevOps к репозиторию Github, в котором находится проект API.

Но в этом репозитории у меня нет файла Nuget.config.

У меня его там нет, чтобы не предоставлять мой пароль каналу mypack.

Как я могу это решить?

Ответ №1:

Добавьте шаг восстановления NuGet в свою сборку и укажите его на канал артефактов.

 - task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    command: 'restore'
    restoreSolution: '$(Build.SourcesDirectory)/WhateverProject.sln'
    feedsToUse: 'select'
    vstsFeed: 'feed guid'
    includeNuGetOrg: true
  

Дополнительная проверка подлинности не требуется, поскольку она выполняется в контексте службы, которая уже прошла проверку подлинности в вашем канале артефактов.

Комментарии:

1. У меня уже есть такой шаг, но мои azure-конвейеры. yml находится в репозитории GitHub. Таким образом, учетные данные, которые я туда поместил, отображаются в репозитории Github.

2. @MiguelMoura Вам не нужно вводить учетные данные. Я обновил свой ответ.

3. Что вы имеете в виду под идентификатором канала в vstsFeed? Я попытался использовать название канала, а также URL-адрес канала, но ни один из них не сработал.

4. @MiguelMoura Я имею в виду именно то, что я сказал: идентификатор канала. Это уникальный идентификатор, а не URL-адрес или имя. Самый простой способ, который я нашел, — это использовать визуальный конструктор и нажать кнопку «Просмотреть YAML» или использовать REST API для получения информации о фиде.

5. Просто для обновления, vstsFeed теперь вместо guid канала должно быть имя канала. Я думаю, что это относительно недавнее обновление Azure DevOps.