Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев

702 views

Published on

1. Сложности при распутывании перекрёстных и вложенных зависимостей.
2. Пакетный менеджер CrossPM. Его возможности и примеры использования.
3. Интеграция CrossPM и системы хранения пакетов Artifactory.

Published in: Technology
  • Login to see the comments

Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев

  1. 1. CrossPM Упрощаем сложные зависимости Александр Ковалев Ведущий программист отдела технологий разработки (DevOps) akovalev@ptsecurity.com
  2. 2. Пакетный менеджер: Что мы хотим
  3. 3. Нерешенные проблемы со сборками Отсутствие единого инструмента, реализующего модель сборок
  4. 4. Нерешенные проблемы со сборками К чему это привело
  5. 5. CrossPM: Серебряная пуля Наше решение
  6. 6. Open Source Подготовка и вывод проекта в сообщество DevOpsHQ CrossPM config.yaml cpm.manifest environment Загруженные зависимости command line Artifactory adapter Git adapter Whatever adapter ... Любая структура каталогов и имен файлов в репозитории Формат описания зависимостей указывается в config.yaml Просто выполнить pip install crosspm перед использованием Логичная структура проекта, ведется работа по документированию кода
  7. 7. CrossPM: Возможности и примеры
  8. 8. CrossPM: Что он может • Найти пакеты, от которых зависит ваш проект • Найти пакеты, от которых зависят эти пакеты • Найти пакеты, от которых зависят и эти пакеты тоже • И т.д… • И т.д… • И т.д… • Распаковать загруженные пакеты • Создать shell скрипт для установки путей к пакетам в переменные окружения • Или cmd скрипт • Или python скрипт • Или json файл • Или просто вывести в stdout • Если Вам этого мало – пойдем пообщаемся… в хорошем смысле • Загрузить все эти найденные пакеты • Или загрузить только указанный пакет • Или просто вернуть полный путь или имя файла пакета
  9. 9. CrossPM: Конфигурация формата манифеста crosspm.yaml (фрагмент) cpm.manifest (пример) boost 1.55.3 poco 1.46.14 openssl 1.0.20 log4cplus 1.1.6 ... columns: "*package, version" ...
  10. 10. 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 snapshot poco 1.46.>=14 1.46-pm * release openssl 1.>0.* 1.* * * log4cplus 1.1.6 1.1-pm R10.0 stable
  11. 11. 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 >snapshot poco 1.46.>=14 1.46-pm * release openssl 1.>0.* 1.* * * log4cplus 1.1.6 1.1-pm R10.0 >=stable
  12. 12. 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
  13. 13. 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 (фрагмент)
  14. 14. 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 (фрагмент)
  15. 15. 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
  16. 16. CrossPM: Интеграция и доработки
  17. 17. CrossPM + Artifactory • Использовали существующий API от Artifactory • Запланировали написать свою библиотеку для работы с Artifactory Первый этап: • Обнаружили, что такая библиотека уже существует • Протестировали: библиотека сыровата, но пользоваться уже можно • Разработчикам из Parallels – отдельное спасибо! Ждем развития! Второй этап (Open Source):
  18. 18. CrossPM + Artifactory + любое другое хранилище, на самом деле… • Динамически подключаемые модули для работы с репозиторием: • Любой способ подключения: • http • ftp, sftp • smb • просто файлы в папках • и прочее… • Любое количество типов репозиториев
  19. 19. CrossPM: Возможные доработки инструмента • Поддержка дополнительных форматов пакетов • Повторные попытки загрузки пакетов при разрывах соединения • Загрузка пакетов в репозиторий • Управление пакетами в репозитории
  20. 20. Полезные ссылки • 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
  21. 21. Спасибо! Александр Ковалев Ведущий программист отдела технологий разработки (DevOps) akovalev@ptsecurity.com https://github.com/devopshq/crosspm Вопросы?

×