Публикация и скачивание пакетов Python с помощью артефактов Azure

Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

С помощью артефактов Azure можно публиковать и скачивать пакеты из веб-каналов и общедоступных реестров, таких как PyPi. В этом кратком руководстве описано, как создать веб-канал, настроить проект и управлять пакетами Python в веб-канале Azure Artifacts.

Необходимые условия

Продукт Требования
Azure DevOps — Организация Azure DevOps.
— проект Azure DevOps .
— Скачивание и установка Python.

Получение кода

  1. Если у вас нет собственного проекта Python, можно использовать следующий пример проекта Python. В противном случае можно перейти к следующему разделу:

    https://github.com/Azure-Samples/azure-stack-hub-flask-hello-world
    
  2. Чтобы создать колесо и исходное распределение, выполните следующие команды в каталоге проекта:

    pip install --upgrade build
    python -m build
    
  3. Если в проекте Python есть файл setup.py , вы также можете создать пакет с помощью:

    python setup.py sdist bdist_wheel
    

Создать канал

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите Артефакты, а затем выберите Создать ленту.

  3. Введите имя для вашего веб-канала.

  4. Выберите настройку Видимость, чтобы управлять тем, кто может просматривать пакеты в ленте.

  5. Выберите Включить пакеты из общих публичных источников, если вы хотите, чтобы ваш канал использовал вышестоящие пакеты из таких источников, как nuget.org или npmjs.com.

  6. Для Области выберите, относится ли канал к текущему проекту или ко всей организации.

  7. После завершения выберите Создать.

    Снимок экрана с вариантами создания нового канала в Azure DevOps Services.

  1. Войдите на сервер Azure DevOps и перейдите в проект.

  2. Выберите Артефакты, а затем выберите Создать ленту.

  3. Введите имя для вашего веб-канала.

  4. Выберите настройку Видимость, чтобы управлять тем, кто может просматривать пакеты в ленте.

  5. Выберите Включить пакеты из общих публичных источников, если вы хотите, чтобы ваш канал использовал вышестоящие пакеты из таких источников, как nuget.org или npmjs.com.

  6. Для Области выберите, относится ли канал к текущему проекту или ко всей организации.

  1. После завершения выберите Создать.

    Снимок экрана с параметрами для создания нового канала в Azure DevOps 2022.

Заметка

При создании канала учетной записи проекта Build Service, например projectName Build Service (orgName), по умолчанию назначается роль читателя канала и вышестоящих источников (участник).

Подключиться к вашей ленте новостей

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите артефактов, выберите свой веб-канал в раскрывающемся меню, а затем выберите Подключиться к каналу.

  3. В разделе Python выберите twine.

  4. Если вы впервые используете Azure Artifacts с Twine, выберите Получить средства и следуйте инструкциям по скачиванию Python и установке Twine и ключа артефактов.

  5. Создайте файл pypirc в домашнем каталоге и вставьте фрагмент кода, предоставленный в разделе установки проекта . Файл должен выглядеть следующим образом:

    [distutils]
    Index-servers =
        FEED_NAME
    
    [FEED_NAME]
    Repository = https://pkgs.dev.azure.com/ORGANIZATION_NAME/PROJECT_NAME/_packaging/FEED_NAME/pypi/upload/
    

Заметка

Если файл pypirc уже содержит учетные данные для общедоступного индекса PyPI, рекомендуется удалить [pypi] раздел, чтобы избежать случайной публикации частных пакетов в PyPI.

Публикация пакетов в веб-канале

  1. В каталоге вашего проекта выполните следующую команду, чтобы создать пакеты исходного кода и wheel.

    python setup.py sdist bdist_wheel
    
    
  2. Чтобы опубликовать пакет, используйте следующую команду. Не забудьте использовать флаг -r FEED_NAME , чтобы избежать случайной публикации в PyPI:

    twine upload -r <FEED_NAME> dist/*
    

Установка пакетов из вашего потока

  1. Чтобы установить пакеты из вашего источника, выполните следующую команду в каталоге проекта:

    pip install
    
  2. Чтобы установить определенный пакет, замените заполнитель именем пакета из веб-канала:

    pip install <PACKAGE_NAME>