Учитывая, что:
- Кажется, что нет простого способа получить список "измененных" файлов в Jenkins (см. здесь и здесь )
- Кажется, что нет быстрого способа изменить список файлов, так как метка xxxx
Как я могу оптимизировать нашу сборку, чтобы при запуске PMD она работала толькодля файлов, которые были изменены с момента последней зеленой сборки.
Немного резервного копирования ... нашему PMD требуется 3–4 минуты, чтобы выполнить ~ 1,5 миллиона строк кода, и, если он обнаруживает проблему, отчет неизменно запускаетсяНедостаточно памяти до его завершения.Я бы хотел урезать пару минут нашего времени сборки и получить хороший отчет о сбоях.Мой первоначальный подход заключался в том, чтобы я:
- получил список изменений от Jenkins
- , запустил PMD для объединения этого списка и содержимого pmd_failures.txt
- если PMD дает сбой, включите список сбойных файлов в pmd_failures.txt
Сложнее, чем хотелось бы, но стоит иметь более быструю, но надежную сборку.
Как только я понял, что Дженкинс не собирается легко давать мне то, что я хотел, я понял, что есть другой возможный подход.Мы помечаем каждую зеленую сборку.Я мог просто получить список файлов, измененных после метки, а затем я мог полностью отказаться от pmd_failures.txt.
Без кубиков.Идея получения списка файлов изменилась, поскольку метка xxxx от Perforce, кажется, никогда не была упорядочена из:
$ p4 files //path/to/branch/...@label > label.out
$ p4 files //path/to/branch/...@now > now.out
$ diff label.out now.out
Раздражает, но, что еще важнее, даже медленнее для многих тысяч наших файлов, чем просто запуск PMD.
Итак, теперь я пытаюсь запустить PMD параллельно с другими компонентами сборки, которые по-прежнему тратят впустую время и ресурсы и делают нашу сборку более сложной.Мне кажется глупым, что я не могу легко получить список измененных файлов от Дженкинса или от Perforce.Кто-нибудь еще нашел разумное решение этих проблем?