Рубрики
Без рубрики

Хостинг пакетов Python в Azure Devops

Блог о том, как построить некоторые пользовательские библиотеки Python и хранить их в качестве частных артефактов в … Помечено с Azure, DevOps, Python, Microsoft.

Блог состоит в том, как создать некоторые пользовательские библиотеки Python и хранить их в качестве частных артефактов в DEVOPS AZURE, используя трубопроводы.

Мотивация

Работа в качестве архитектора ученых данных и облачных решений в моем стартапе Cortexbci. У меня была ответственность за проведение и опубликовать вашу мудрость Python SDK для разработки приложений для контролируемого мозга. Это была первая мотивация для меня, чтобы написать блог, чтобы упростить процесс хостинга пакетов Python в Azure DevOps для других разработчиков. Я прочитал несколько документов и блогов за то же самое, но тот, который помог мне много помогло, был в блоге, написанном Геральд Гюра , App Dev Manager, Microsoft. Блог, который я написал, сильно вдохновлен от него. Я принял VSCode в качестве основного IDE для кодирования, а также новые изменения в версии Azure DevOps.

Введение в Azure DevOps

Azure DEVOPS предоставляет услуги разработчика для групп поддержки планировать работу, сотрудничать по разработке кода, а также создавать и развертывать приложения. Azure DEVOPS поддерживает культуру и набор процессов, которые приносят разработчиков и менеджеров проектов и вкладчиков для завершения разработки программного обеспечения. Это позволяет организациям создавать и улучшать продукты более быстрыми темпами, чем с традиционными подходами к разработке программного обеспечения.

Услуги в Azure Devops

Настройка Azure DevOps

  • Создайте проект в Azure DEVOPS
  • Создайте репо для пакета Python

Вы можете использовать любые элементы управления версиями и хостинга кодов, такие как GitHub или просто создают репо в Azure Reppos в проекте DEVOPS, которые мы создали. В моем случае я собираюсь создать репо в Github

Настройка Python (локальная) среда

Откройте свой любимый IDE (я предпочитаю VSCode)

  • Создайте локальный каталог для пакета Python
  • Создать виртуальную среду Python
python3 -m devopsenv .
source  ./devopsvenv/bin/activate

  • Клонировать ваше репо
git clone 
  • Установка требуемых пакетов Python
    • питиш
    • рулевое колесо
    • шпагат

Кодирование и тестирование ваших пакетов Python

Кодирование пакетов Python

Пакеты в Python – это любой набор папок, а подпапки, которые имеют init .py файл в нем (каждая папка или подпапка должны иметь init .py файл, даже пустой).

  • Выберите имя для вашего верхнего пакета Python Выбрал значимый, но короткий (лучшее одно-слово). Я должен создать пакет Python под названием «Животные)

  • Теперь мы можем создавать подразделения. Я собираюсь создать разные животные в качестве подразделения (например, собака, кошка и т. Д.). Его функциональность может быть получена в виде животных.

Создать init .py файл для каждого подраздела. Вы можете написать вам функции прямо в init .py файл. Тем не менее, я предпочитаю писать их в отдельных файлах и группировать их по функциональности. Так что создайте функции .py под каждым подразделением и напишите методы под ним.

Внутри каждого __init__.py, написать

from .functions import *

Под собакой/функциями .py

def makesound():
    return "Woof! Woof!"

Под кошкой/функциями .py

def makesound():
    return "Meow! Meow!"

Тестирование пакетов Python

На уровне пакета Животные и животные Добавьте новую папку под названием Tests. В этой папке добавьте пустую init .py файл.

В папке «Тесты» добавьте файл Python вызываемый, test_ functions.py. Примечание. Очень важно префиксировать все ваши тестовые файлы с помощью «TEST_», он будет использоваться каркасом CI для идентификации файлов тестирования подразделения, которые необходимо запустить.

Внутри файла test_functions.py Добавьте следующее:

import pytest
import animalsounds.dog as d
import animalsounds.cat as c

def test_doghi():
    dogres = d.makesound()
    assert isinstance(dogres, str)


def test_cathi():
    catres = c.makesound()
    assert isinstance(catres, str)

Чтобы запустить тесты подразделения, используйте следующую команду

python3 -m pytest 

Готовимся к развертыванию пакета Python

Есть несколько дополнительных файлов, которые нам нужно добавить. В корне (уровень приложения) добавьте следующие файлы:

  • License.txt.txt. – Вы можете создавать при создании репо в Github
  • Readme.md – описать пакет
  • Mainest.in – это файл, используемый Packager для включения или исключения файлов. Теперь создайте файл и добавьте его к нему:
include README.md LICENSE
  • setup.cfg – другой файл, используемый Packager. Создайте файл и добавьте следующее в качестве текста:
[metadata]
license_files = LICENSE

[bdist_wheel]
universal=1
  • .pypirc – это важный файл. Оставьте этот файл пустым на данный момент.

  • Требования .txt – в этом файле мы добавим все пакеты, которые необходимо установить до нашего пакета, или что наш пакет зависит от. Добавьте следующее:

pip
pytest
wheel
twine
setuptools
  • setup.py – это файл, где установка для создания пакета идет здесь. Обратитесь Это Больше подробностей
from setuptools import setup, find_packages

with open('README.md') as f:
    long_description = f.read()

setup(
  name = 'animalsounds',         # How you named your package folder (TSIClient)
  packages = ['animalsounds'],   # Chose the same as "name"
  version = '1.0.0',      # Start with a small number and increase it with every change you make
  license='MIT',        # Chose a license from here: https://help.github.com/articles/licensing-a-repository
  long_description=long_description,
  long_description_content_type='text/markdown',  # This is important!
  author = 'Vivek Raja P S',                   # Type in your name
  author_email = 'vivekraja98@gmail.com',      # Type in your E-Mail
  url = 'https://github.com/Vivek0712/azure-devops-pypackage',   # Provide either the link to your github or to your website
  #download_url = 'https://github.com/RaaLabs/TSIClient/archive/v_0.7.tar.gz',    # If you create releases through Github, then this is important
  keywords = ['Azure', 'DevOps', 'Python'],   # Keywords that define your package best
  packages = find_packages("src", exclude=["test"]),
  classifiers=[
    'Development Status :: 3 - Alpha',      # Chose either "3 - Alpha", "4 - Beta" or "5 - Production/Stable" as the current state of your package
    'Intended Audience :: Developers',      # Define that your audience are developers
    'Topic :: Software Development :: Build Tools',
    'License :: OSI Approved :: MIT License',   # Again, pick a license
    'Programming Language :: Python :: 3.5',
    'Programming Language :: Python :: 3.6',
    'Programming Language :: Python :: 3.9',
  ],
)

Окончательная структура проекта должна выглядеть так

Доработка трубопровода Azure DevOps и корма

Создание нового артефакта

Давайте начнем с создания нового корма для нашего трубопровода. Перейти к Azure DevOps> Артефакты> Создать новый канал. Дайте подходящее название и оставьте записку того же, так как нам понадобится позже.

Создание трубопровода для создания артефакта

Под трубопроводами -> создать новый трубопровод. Нам нужно настроить на конфигурацию конвейера, которая является процессом 4 шагов.

  1. Connect – подключиться к услуге хостинга репозитория кода
  2. Выберите – выберите пакет REPO
  3. Настроить – создать файл YML
  4. Обзор – обзор, если все конфигурации сделаны правильно. И, наконец, запустите трубопровод.

  5. Соединять

Пакет Python, который я планирую для размещения, находится в моем Github. Поэтому я собираюсь подключить мой Github с Azure Devops и разрешаю то же самое.

  1. Выбирать

Требуемый репозиторий выбран.

  1. Настроить

Под настройкой вкладки Выберите стартовый трубопровод, а затем в лазурных трубопроводах, используйте сценарий YML, данный здесь

  1. Обзор

Просмотрите и запустите трубопровод.

Настройка выпуска трубопровода

После того, как трубопровод запущен, он создает папку Dist в Repo Code, который имеет артефакт.

Чтобы настроить выпускной трубопровод для освобождения артефакта, который мы только что создали, перейдите в Azure DevOps> Трубопроводы> Выпуск трубопровода> Создать новый выпускной трубопровод.

Начните с пустого шаблона.

Выпускной трубопровод принимает артефакт и проходит через несколько этапов для публикации артефакта в соответствии с конфигурацией трубопровода.

Чтобы опубликовать пакет Python, мы собираемся выбрать артефакт сборки построения и создать сцену с одной работой с тремя задачами.

Выбор источника артефакта

Выберите трубопровод, который мы создали до источника артефакта.

Стадия трубопровода

Нажмите на сцену и дайте подходящее имя для того же. Нажмите на работу, а затем мы собираемся создавать три задания здесь. Добавить работу агента.

Задача 1: шпагат аутентификация

Поиск шпагата аутентификация на правой стороне и добавьте то же самое.

Задача 2: установка шпагата

Поиск командной строки и добавить ее. Назовите командный скрипт как Установка шпагата и добавьте следующее в скрипт

pip install twine

Задача 3:

Поиск командной строки и добавить ее. Назовите командный скрипт как Опубликовать артефакт и добавьте следующее в скрипт. Заменить С именем артефактного корма, который мы создали в первую очередь и с названием трубопровода

twine upload -r  --config-file $(PYPIRC_PATH) d:\a\r1\a\\dist\dist\*

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

После успешного запуска конвейера выпуска мы можем увидеть опубликованный артефакт в артефакте.

Использование пакета Python

Теперь, когда наш пакет Python опубликован, мы увидим, как его использовать.

Создать личный токен

В правом верхнем углу нажмите на свою учетную запись и создайте личный токен. Этот токен уверен, что пакет осуществляется только уполномоченными лицами, поскольку он является частным для организации.

Подключиться к Feed.

Как только личный токен сгенерирован, перейдите в артефакт и нажмите на наш артефакт нашего пакета Python. Нажмите Connect, чтобы подавать и выберите шпагат или PYPI в качестве издателя для одного и того же. Следуйте данным там шагам.

Установите пакет Python

После того, как этапы последуют, с подключенным токеном доступа и кормление, вы сможете установить и получить доступ к пакету Python.

Поздравляем, вы разместили ваш пользовательский пакет Python в Azure DEVOPS. Если вы достигли в конце статьи, следуйте, делитесь статьей.

Кроме того, проверить мою сессию на «Pysting Python Packages в Azure DevOps» в Microsoft Reactor

Оригинал: “https://dev.to/vivek0712/hosting-python-packages-in-azure-devops-1foo”