![Page 1: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/1.jpg)
CrossPM Упрощаем сложные зависимости
Александр КовалевВедущий программист
отдела технологий разработки (DevOps)[email protected]
![Page 2: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/2.jpg)
Пакетный менеджер:
Что мы хотим
![Page 3: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/3.jpg)
Нерешенные проблемы со сборками
Отсутствие единого инструмента, реализующего модель сборок
![Page 4: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/4.jpg)
Нерешенные проблемы со сборками
К чему это привело
![Page 5: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/5.jpg)
CrossPM: Серебряная пуля
Наше решение
![Page 6: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/6.jpg)
Open Source
Подготовка и вывод проекта в сообщество DevOpsHQ
CrossPMconfig.yaml
cpm.manifest
environment
Загруженныезависимости
command line
Artifactoryadapter
Gitadapter
Whateveradapter
...
Любая структура каталогови имен файлов в репозитории
Формат описаниязависимостей указываетсяв config.yaml
Просто выполнитьpip install crosspmперед использованием
Логичная структура проекта,ведется работа подокументированию кода
![Page 7: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/7.jpg)
CrossPM:
Возможности и примеры
![Page 8: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/8.jpg)
CrossPM: Что он может
• Найти пакеты, от которых зависит ваш проект• Найти пакеты, от которых зависят эти пакеты
• Найти пакеты, от которых зависят и эти пакеты тоже• И т.д…
• И т.д…• И т.д…
• Распаковать загруженные пакеты• Создать shell скрипт для установки путей к пакетам в переменные окружения
• Или cmd скрипт• Или python скрипт• Или json файл• Или просто вывести в stdout
• Если Вам этого мало – пойдем пообщаемся… в хорошем смысле
• Загрузить все эти найденные пакеты• Или загрузить только указанный пакет• Или просто вернуть полный путь или имя файла пакета
![Page 9: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/9.jpg)
CrossPM: Конфигурация формата манифеста
crosspm.yaml (фрагмент)
cpm.manifest (пример)boost 1.55.3poco 1.46.14openssl 1.0.20log4cplus 1.1.6
... columns: "*package, version"...
![Page 10: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/10.jpg)
CrossPM: Конфигурация формата манифеста
...columns: "*package, version, branch, contract, quality"parsers: common: columns: version: "{int}.{int}.{int}[-{str}]"
artifactory: path: "{server}/{package}/{branch}/{package}.{version}[.zip|.tar.gz|.nupkg]" properties: "build.contract.{contract} = {quality}"...
crosspm.yaml (фрагмент)
cpm.manifest (пример)
boost 1.55.*- 1.55-pm R11.0 snapshotpoco 1.46.>=14 1.46-pm * releaseopenssl 1.>0.* 1.* * *log4cplus 1.1.6 1.1-pm R10.0 stable
![Page 11: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/11.jpg)
CrossPM: Конфигурация меток качества
...values: quality: 1: banned 2: snapshot 3: integration 4: stable 5: release...
crosspm.yaml (фрагмент)
cpm.manifest (пример)
boost 1.55.*- 1.55-pm R11.0 >snapshotpoco 1.46.>=14 1.46-pm * releaseopenssl 1.>0.* 1.* * *log4cplus 1.1.6 1.1-pm R10.0 >=stable
![Page 12: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/12.jpg)
CrossPM: Конфигурация дополнительных опций
...options: arch: cmdline: arch env: CROSSPM_ARCH
osname: cmdline: os env: CROSSPM_OS default: linux...
crosspm.yaml (фрагмент)
Командная строкаC:\build> crosspm download --out-format=stdout –o arch=x86_64,os=win
![Page 13: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/13.jpg)
CrossPM: Конфигурация источников
...sources: - type: artifactory parser: artifactory server: https://repo1.someorg.com/artifactory/ repo: - libs-cpp - libs.snapshot auth_type: simple auth: - reader_cpp_libs - "**********" - type: artifactory parser: artifactory server: https://repo1.someorg.com/artifactory/ repo: libs-other.snapshot auth_type: simple auth: - "reader_libs" - "**********"...
crosspm.yaml (фрагмент)
![Page 14: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/14.jpg)
CrossPM: Конфигурация источников (упрощение)
...common: type: artifactory parser: artifactory server: https://repo1.someorg.com/artifactory/ auth_type: simple
sources: - repo: - libs-cpp - libs.snapshot auth: - reader_cpp_libs - "**********"
- repo: libs-other.snapshot auth: - "reader_libs" - "**********"...
crosspm.yaml (фрагмент)
![Page 15: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/15.jpg)
CrossPM: Командная строка
CrossPM (Cross Package Manager) version: 0.8.1 The MIT License (MIT)
Usage: crosspm download [options] crosspm promote [options] crosspm pack <OUT> <SOURCE> [options] crosspm -h | --help crosspm --version
Options: <OUT> Output file. <SOURCE> Source directory path. -h, --help Show this screen. --version Show version. -v, --verbose Increase output verbosity. --verbosity=LEVEL Set output verbosity level: (critical, error, warning, info, ... -c=FILE, --config=FILE Path to configuration file. -o OPTIONS, --options OPTIONS Extra options. --depslock-path=FILE Path to file with locked dependencies [default: ./cpm.manifest] --out-format=TYPE Output data format. Available formats:(['stdout', 'cmd', ... --output=FILE Output file name (required if --out_format is not stdout) --out-prefix=PREFIX Prefix for output variable name [default: ] (no prefix at all)
crosspm --help
![Page 16: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/16.jpg)
CrossPM:
Интеграция и доработки
![Page 17: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/17.jpg)
CrossPM + Artifactory
• Использовали существующий API от Artifactory• Запланировали написать свою библиотеку для работы с Artifactory
Первый этап:
• Обнаружили, что такая библиотека уже существует• Протестировали: библиотека сыровата, но пользоваться уже можно• Разработчикам из Parallels – отдельное спасибо! Ждем развития!
Второй этап (Open Source):
![Page 18: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/18.jpg)
CrossPM + Artifactory
+ любое другое хранилище, на самом деле…
• Динамически подключаемые модули для работы с репозиторием:
• Любой способ подключения:• http• ftp, sftp• smb• просто файлы в папках• и прочее…
• Любое количество типов репозиториев
![Page 19: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/19.jpg)
CrossPM: Возможные доработки инструмента
• Поддержка дополнительных форматов пакетов
• Повторные попытки загрузки пакетов при разрывах соединения
• Загрузка пакетов в репозиторий
• Управление пакетами в репозитории
![Page 20: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/20.jpg)
Полезные ссылки
• CrossPM:https://github.com/devopshq/crosspmустановка:pip install crosspm
• Python interface library for Jfrog Artifactory:https://github.com/Parallels/artifactory
• Ждем ваши предложения на DevOpsHQ:https://github.com/devopshq/crosspm/issues
![Page 21: Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев](https://reader035.vdocuments.net/reader035/viewer/2022062522/5879301c1a28ab7c448b6389/html5/thumbnails/21.jpg)
Спасибо!
Даешь единый менеджер для всех пакетов!
Александр КовалевВедущий программист
отдела технологий разработки (DevOps)[email protected]
https://github.com/devopshq/crosspm
Вопросы?