Автоматически тестировать зависимости сложного набора оборотов - PullRequest
0 голосов
/ 23 августа 2010

У меня есть программный пакет из ~ 150 пользовательских RPM с довольно сложными зависимостями между ними:

  • дерево зависимостей для каждого пакета обычно имеет глубину около пяти уровней
  • тамнесколько пакетов, которые (намеренно) конфликтуют друг с другом
  • большинство пакетов зависят от одного или нескольких пакетов Red Hat, а также от других пользовательских пакетов

Моя машина непрерывной интеграции собирает все мои пакетыи создает из них репозиторий yum, а затем запускает ISO-образ репозитория yum - так распределяется мое программное обеспечение.

Моя проблема: я хочу, чтобы машина CI проверила, для каждого пакета вISO, что все его зависимости встречаются либо другими пользовательскими пакетами в ISO, либо пакетами Red Hat.Это сделано для того, чтобы ловить не только ошибки в базовом программном обеспечении, но и разработчиков, которые забыли перенести свои изменения в ветку релиза в системе управления версиями.

Вот как я хотел бы ее решить (чтобы вы, ребята, моглискажите мне, что есть лучший способ!): для каждого пакета создайте чистую виртуальную машину с:

  • базовой установкой репозиториев пакетов RHEL или CentOS
  • , указывающих на зеркало RHEL имой ISO (монтируется через петлевое устройство)

... и вызовите "yum install xxx" на виртуальной машине.

Проблема в том, что это занимает слишком много времени - выполнение каждого пакетаУстановка изменяет состояние виртуальной машины.Каждый RPM действительно должен быть протестирован на «чистой» ОС, и повторное создание занимает ~ 10 минут на пакет .Могу ли я проверить установку пакета без изменения виртуальной машины или ее повторного создания с нуля?Я надеялся, что для yum был аргумент командной строки «--test», аналогичный «rpm -i --test», но я его не вижу.Я не могу использовать «rpm» напрямую, потому что он не загружает автоматически зависимости.

Вопросы:

  • Кто-нибудь знает способ запуска yum в режиме «имитации»?
  • есть ли лучший способ решить мою проблему?

Имейте в виду, я здесь на RHEL (ням 3.2.22), а не на Fedora, но EPEL, вероятно, всеправо на использование.

Ответы [ 2 ]

0 голосов
/ 30 августа 2012

Вы можете использовать инструмент, который я написал, под названием Mach.Это устанавливает chroot для распределения.Вы можете

  • настроить базовый chroot
  • mach -r (ваш корень) yum install 'rpm 1'
  • mach -r (ваш корень) установочную базу(который удалит все установленные rpms)
  • mach -r (ваш root) yum install 'rpm 2'

Это было бы быстрее, чем делать это на виртуальной машине.

0 голосов
/ 16 ноября 2010

Вы в значительной степени описали OSB: https://build.opensuse.org/

Это не специфично для дистрибутива, вы можете заставить его работать на вас без особых хлопот.

...