SlideShare a Scribd company logo
CrossPM
Упрощаем сложные зависимости
Александр Ковалев
Ведущий программист
отдела технологий разработки (DevOps)
akovalev@ptsecurity.com
Пакетный менеджер:
Что мы хотим
Нерешенные проблемы со сборками
Отсутствие единого инструмента, реализующего модель сборок
Нерешенные проблемы со сборками
К чему это привело
CrossPM: Серебряная пуля
Наше решение
Open Source
Подготовка и вывод проекта в сообщество DevOpsHQ
CrossPM
config.yaml
cpm.manifest
environment
Загруженные
зависимости
command line
Artifactory
adapter
Git
adapter
Whatever
adapter
...
Любая структура каталогов
и имен файлов в репозитории
Формат описания
зависимостей указывается
в config.yaml
Просто выполнить
pip install crosspm
перед использованием
Логичная структура проекта,
ведется работа по
документированию кода
CrossPM:
Возможности и примеры
CrossPM: Что он может
• Найти пакеты, от которых зависит ваш проект
• Найти пакеты, от которых зависят эти пакеты
• Найти пакеты, от которых зависят и эти пакеты тоже
• И т.д…
• И т.д…
• И т.д…
• Распаковать загруженные пакеты
• Создать shell скрипт для установки путей к пакетам в переменные окружения
• Или cmd скрипт
• Или python скрипт
• Или json файл
• Или просто вывести в stdout
• Если Вам этого мало – пойдем пообщаемся… в хорошем смысле
• Загрузить все эти найденные пакеты
• Или загрузить только указанный пакет
• Или просто вернуть полный путь или имя файла пакета
CrossPM: Конфигурация формата манифеста
crosspm.yaml (фрагмент)
cpm.manifest (пример)
boost 1.55.3
poco 1.46.14
openssl 1.0.20
log4cplus 1.1.6
...
columns: "*package, version"
...
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
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
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
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 (фрагмент)
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 (фрагмент)
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
CrossPM:
Интеграция и доработки
CrossPM + Artifactory
• Использовали существующий API от Artifactory
• Запланировали написать свою библиотеку для работы с Artifactory
Первый этап:
• Обнаружили, что такая библиотека уже существует
• Протестировали: библиотека сыровата, но пользоваться уже можно
• Разработчикам из Parallels – отдельное спасибо! Ждем развития!
Второй этап (Open Source):
CrossPM + Artifactory
+ любое другое хранилище, на самом деле…
• Динамически подключаемые модули для работы с репозиторием:
• Любой способ подключения:
• http
• ftp, sftp
• smb
• просто файлы в папках
• и прочее…
• Любое количество типов репозиториев
CrossPM: Возможные доработки инструмента
• Поддержка дополнительных форматов пакетов
• Повторные попытки загрузки пакетов при разрывах соединения
• Загрузка пакетов в репозиторий
• Управление пакетами в репозитории
Полезные ссылки
• 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
Спасибо!
Александр Ковалев
Ведущий программист
отдела технологий разработки (DevOps)
akovalev@ptsecurity.com
https://github.com/devopshq/crosspm
Вопросы?

More Related Content

PPTX
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
PPTX
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
PPTX
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
PPTX
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
PPTX
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
PPTX
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
PPTX
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко

What's hot (20)

PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
PPTX
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
PPTX
Как мы собираем проекты в выделенном окружении в Windows Docker
PPTX
Sql server clr integration
PPTX
Интеграция TeamCity и сервера символов | Алексей Соловьев
PPTX
Silverlight 4, есть ли жизнь на десктопе
PPTX
Типовая сборка и деплой продуктов в Positive Technologies
PPTX
Test driven development in net
PDF
Денис Паясь
PDF
Максим Пугачев
PPTX
Развитие сообщества Open DevOps Community
PDF
Игорь Кашкута
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
PPTX
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
PDF
«Тестируем веб приложения», Павел Сташевский
PPTX
Андрей Чебукин "Построение успешных API"
PDF
Continuous integration
PDF
Денис Чистяков: Workflow. Работа над проектом в Яндексе
PDF
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
PPT
Maven как средство сборки проекта
Cистемы автоматической сборки проектов (Полина Фоминых)
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Как мы собираем проекты в выделенном окружении в Windows Docker
Sql server clr integration
Интеграция TeamCity и сервера символов | Алексей Соловьев
Silverlight 4, есть ли жизнь на десктопе
Типовая сборка и деплой продуктов в Positive Technologies
Test driven development in net
Денис Паясь
Максим Пугачев
Развитие сообщества Open DevOps Community
Игорь Кашкута
Docker + Selenium Webdriver в рамках Continuous Integration
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
«Тестируем веб приложения», Павел Сташевский
Андрей Чебукин "Построение успешных API"
Continuous integration
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
Maven как средство сборки проекта
Ad

Viewers also liked (20)

PPTX
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
PPTX
Сообщество DevOpsHQ: идеология и инструменты | Александр Паздников
PDF
Tapping into the core
PDF
Метод машинного обучения для распознавания сгенерированных доменных имен
PPTX
Модель системы Continuous Integration в компании Positive Technologies | Тиму...
PPTX
Организация workflow в трекере TFS | Алексей Соловьев
PDF
Возможно, время не на твоей стороне. Реализация атаки по времени в браузере
PPTX
SupplyLab - публикация, доставка, развёртывание, лицензирование | Александр П...
PPTX
Инструменты для проведения конкурентного анализа программных продуктов | Вла...
PPTX
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
PPTX
Доставка зловредов через облака
PDF
Обход файрволов веб-приложений
PDF
Аспекты деятельности инсайдеров на предприятии
PPTX
Fingerprinting and Attacking a Healthcare Infrastructure
PDF
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
PPT
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
PPTX
Эксплуатируем неэксплуатируемые уязвимости SAP
PPTX
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
PDF
Magic Box, или Как пришлось сломать банкоматы, чтобы их спасти
PDF
Боремся с читингом в онлайн-играх
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
Сообщество DevOpsHQ: идеология и инструменты | Александр Паздников
Tapping into the core
Метод машинного обучения для распознавания сгенерированных доменных имен
Модель системы Continuous Integration в компании Positive Technologies | Тиму...
Организация workflow в трекере TFS | Алексей Соловьев
Возможно, время не на твоей стороне. Реализация атаки по времени в браузере
SupplyLab - публикация, доставка, развёртывание, лицензирование | Александр П...
Инструменты для проведения конкурентного анализа программных продуктов | Вла...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Доставка зловредов через облака
Обход файрволов веб-приложений
Аспекты деятельности инсайдеров на предприятии
Fingerprinting and Attacking a Healthcare Infrastructure
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Эксплуатируем неэксплуатируемые уязвимости SAP
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
Magic Box, или Как пришлось сломать банкоматы, чтобы их спасти
Боремся с читингом в онлайн-играх
Ad

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

PDF
RDSDataSource: Основы LLVM
PDF
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
PPTX
Александр Фокин, Рефлексия в C++
PDF
C++ осень 2013 лекция 7
PPTX
Scripting languages
PPTX
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
PPT
Catalyst – MVC framework на Perl (RIT 2008)
PDF
Building deployment pipeline - DevOps way
PDF
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
PDF
Практика разработки веб-серверов на Rust
PDF
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
PDF
Теория языков программирования некоторые слайды к лекциям
PDF
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
PDF
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
PPTX
Управление облачной инфраструктурой
PDF
Леонид Васильев "Python в инфраструктуре поиска"
ODP
Middleware
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
PDF
Caché Native Access. InterSystems Meetup 2014
PDF
Программируемость коммутаторов для ЦОД Cisco Nexus
RDSDataSource: Основы LLVM
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Александр Фокин, Рефлексия в C++
C++ осень 2013 лекция 7
Scripting languages
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Catalyst – MVC framework на Perl (RIT 2008)
Building deployment pipeline - DevOps way
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Практика разработки веб-серверов на Rust
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Теория языков программирования некоторые слайды к лекциям
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Управление облачной инфраструктурой
Леонид Васильев "Python в инфраструктуре поиска"
Middleware
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Caché Native Access. InterSystems Meetup 2014
Программируемость коммутаторов для ЦОД Cisco Nexus

More from Positive Hack Days (20)

PPTX
Аналитика в проектах: TFS + Qlik
PPTX
Использование анализатора кода SonarQube
PPTX
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
PPTX
Автоматизация построения правил для Approof
PDF
Мастер-класс «Трущобы Application Security»
PDF
Формальные методы защиты приложений
PDF
Эвристические методы защиты приложений
PDF
Теоретические основы Application Security
PPTX
От экспериментального программирования к промышленному: путь длиной в 10 лет
PDF
Уязвимое Android-приложение: N проверенных способов наступить на грабли
PPTX
Требования по безопасности в архитектуре ПО
PDF
Формальная верификация кода на языке Си
PPTX
Механизмы предотвращения атак в ASP.NET Core
PDF
SOC для КИИ: израильский опыт
PDF
Honeywell Industrial Cyber Security Lab & Services Center
PDF
Credential stuffing и брутфорс-атаки
PDF
Доклад SiteSecure
PDF
Практический опыт защиты финансовых транзакций клиентов Банка
PDF
Решение SafeTouch — доверенный экран для безопасного подтверждения банковских...
PDF
Эффективный контроль сотрудников
Аналитика в проектах: TFS + Qlik
Использование анализатора кода SonarQube
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Автоматизация построения правил для Approof
Мастер-класс «Трущобы Application Security»
Формальные методы защиты приложений
Эвристические методы защиты приложений
Теоретические основы Application Security
От экспериментального программирования к промышленному: путь длиной в 10 лет
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Требования по безопасности в архитектуре ПО
Формальная верификация кода на языке Си
Механизмы предотвращения атак в ASP.NET Core
SOC для КИИ: израильский опыт
Honeywell Industrial Cyber Security Lab & Services Center
Credential stuffing и брутфорс-атаки
Доклад SiteSecure
Практический опыт защиты финансовых транзакций клиентов Банка
Решение SafeTouch — доверенный экран для безопасного подтверждения банковских...
Эффективный контроль сотрудников

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

  • 1. CrossPM Упрощаем сложные зависимости Александр Ковалев Ведущий программист отдела технологий разработки (DevOps) akovalev@ptsecurity.com
  • 3. Нерешенные проблемы со сборками Отсутствие единого инструмента, реализующего модель сборок
  • 4. Нерешенные проблемы со сборками К чему это привело
  • 6. Open Source Подготовка и вывод проекта в сообщество DevOpsHQ CrossPM config.yaml cpm.manifest environment Загруженные зависимости command line Artifactory adapter Git adapter Whatever adapter ... Любая структура каталогов и имен файлов в репозитории Формат описания зависимостей указывается в config.yaml Просто выполнить pip install crosspm перед использованием Логичная структура проекта, ведется работа по документированию кода
  • 8. CrossPM: Что он может • Найти пакеты, от которых зависит ваш проект • Найти пакеты, от которых зависят эти пакеты • Найти пакеты, от которых зависят и эти пакеты тоже • И т.д… • И т.д… • И т.д… • Распаковать загруженные пакеты • Создать shell скрипт для установки путей к пакетам в переменные окружения • Или cmd скрипт • Или python скрипт • Или json файл • Или просто вывести в stdout • Если Вам этого мало – пойдем пообщаемся… в хорошем смысле • Загрузить все эти найденные пакеты • Или загрузить только указанный пакет • Или просто вернуть полный путь или имя файла пакета
  • 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. 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. 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. 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. 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. 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. 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
  • 17. CrossPM + Artifactory • Использовали существующий API от Artifactory • Запланировали написать свою библиотеку для работы с Artifactory Первый этап: • Обнаружили, что такая библиотека уже существует • Протестировали: библиотека сыровата, но пользоваться уже можно • Разработчикам из Parallels – отдельное спасибо! Ждем развития! Второй этап (Open Source):
  • 18. CrossPM + Artifactory + любое другое хранилище, на самом деле… • Динамически подключаемые модули для работы с репозиторием: • Любой способ подключения: • http • ftp, sftp • smb • просто файлы в папках • и прочее… • Любое количество типов репозиториев
  • 19. CrossPM: Возможные доработки инструмента • Поддержка дополнительных форматов пакетов • Повторные попытки загрузки пакетов при разрывах соединения • Загрузка пакетов в репозиторий • Управление пакетами в репозитории
  • 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. Спасибо! Александр Ковалев Ведущий программист отдела технологий разработки (DevOps) akovalev@ptsecurity.com https://github.com/devopshq/crosspm Вопросы?