Поддержка GNU Autotools в TeamCity

Руководитель

Андрей Щеглов

Продукт

TeamCity

Город

Москва

Проект

В настоящее время TeamCity поддерживает (посредством внешнего модуля) сборку кода на C или C++ лишь в случае, если код опирается на CMake. В то же время огромное количество проектов, включая glibc, GCC и Mozilla, использует GNU Autotools, что на практике (применительно к TeamCity) ограничивает функциональность сервера до одного модуля -- Command Line Runner.

Для конечного пользователя это выливается в необходимость знать "кухню" Autotools (configure, make, make check), а также в полное отсутствие отчётов (статистики по сборкам) и диагностики ошибок (в случае использования одного сценария ошибки конфигурации, компиляции, связывания (linking) и "падения" тестов неразличимы без ручного анализа протокола сборки).

Предлагается устранить упомянутые ограничения путём создания модуля расширения TeamCity, решающего следующие задачи:

  • Возможность ручного задания ключей командной строки и/или переменных окружения (CFLAGS, CXXFLAGS) для каждого из подшагов сборки (configure, make, check, install, installcheck и т. д.). Набор шагов (последовательность make targets) должен быть настраиваемым, сценарий по умолчанию должен являться не более чем шаблоном.
  • Возможность создания бинарных артефактов посредством "make DESTDIR=... install" с последующей упаковкой .tar.gz, .tar.bz2 и/или .tar.xz и автоматическим добавлением в Artifact Paths.
  • Возможность выполнения тестов установленного пакета посредством make installcheck.
  • Определение типичных ошибок конфигурации (configure), сборки (make) и тестирования (make -k check или make -k test).
    • Создание проблем сборки (build problems) с уникальной (где применимо) и повторяющейся (где применимо) identity.
    • Автоматическое добавление config.log, config.h и (в случае неудачной сборки) дерева Makefile'ов в Artifact Paths.
    • Поддержка тестов, заданных через переменную TESTS (стандартный механизм), а тж написанных с помощью TAP, DejaGnu и check. Поддержка нестандартных для TeamCity исходов тестов (XPASS, XFAIL).

    Презентация 26 апреля 2017

    Требования
    • знание или желание освоить Java,
    • начальный уровень владения C,
    • начальные знания по ОС UNIX,
    • начальный уровень владения инструментарием GNU Autotools.
    Поддержка GNU Autotools в TeamCity
    TeamCity extension for Visual Studio Code