Twitter представил первый значительный выпуск системы сборки Pants

Опубликован первый значительный выпуск системы сборки Pants 1.0, развиваемой компанией Twitter в качестве масштабируемой замены сборочного инструментария Maven. Pants предоставляет средства для сборки и тестирования кода на различных языках программирования и хорошо подходит для организации сборки в больших или быстрорастущих репозиториях, содержащих множество подпроектов, совместно использующих значительные порции кода. Система также оптимизирована для работы в условиях наличия сложных зависимостей от внешних библиотек. Проект написан на языке Python и распространяется под лицензией Apache 2.0.

Pants 1.0 позиционируется как первый значительный выпуск, пригодный для широкого использования, в котором осуществлена стабилизация интерфейсов для разработки модулей-дополнений и опций командной строки. В новом выпуске также значительно упрощены установка, настройка и адаптация под рабочий процесс. Например, для установки достаточно загрузить и выполнить один скрипт. Модульная организация позволяет легко встраивать обработчики для любых аспектов работы Pants. Система и модули распространяются через репозиторий PYPI.

Основные особенности Pants:

  • Встроенная поддержка языков программирования Python, Java и Scala. В форме плагинов доступна поддержка C/C+, Go, JavaScript/NodeJS и Android.
  • Возможность организации повторяемых сборок (собранные файлы бинарно идентичны при разных сборках одного и того же кода на разных системах);
  • Для оценки изменений используются хэши от содержимого файлов, а не данные о времени изменения файлов;
  • Система кэширования промежуточных результатов сборки;
  • Возможность организации распределённого кэша, охватывающего несколько серверов и доступного через API REST или NFS;
  • Наличие поддержки в интегрированных средах разработки, таких как IntelliJ;
  • Поддержка инкрементальных сборок, включая оптимизации для быстрой сборки проектов на языке Scala;
  • Поддержка подключения расширяющих функциональность дополнений, написанных на языке Python;
  • Поддержка создания самодостаточных сборок программ на языке Python, упакованных с использованием инструментария PEX (Python EXecutable);
  • Интеграция с репозиториями Python и JVM, используя PEX и Ivy.

© OpenNet