upgraded Jenkins && broken it && repaired succefully – день прожит не зря

День прожит не зря!

На сегодня я запланировал для себя ничего не кодить – давно было хотел поиграться плагином для XCode. Это было нужно для того, чтобы организовать нормальный процесс прогона юнит тестов на сборочном сервере. Вместе с установкой плагина решил естественным образом обновить и сам Jenkins и все плагины на него установленные. Сказано – сделано. Но меня ожидало несколько подводных камней.

Continue reading upgraded Jenkins && broken it && repaired succefully – день прожит не зря

Jenkins, ant, junit – взрывная смесь. Для мозга :)

Неожиданно 🙂

Как-то заметили, что на сборочной машине под Jenkins тесты бегут в целом в два раза медленнее, чем на десктопе. А отдельные тесты на два порядка – 800мс в тех тестах, которые на десктопе выполняются за 8мс. Выяснил, что по какой-то причине на линюксе junit задача в ant стартуется, по умолчанию, в отдельной java машине каждый тест, хотя по всем докам на ant/junit следует, что если никаких опций не задавать, должен стартовать в той же машине, что ant. В результате работает дольше. Более того, мне так и не удалось найти комбинацию опций, чтобы она работала в той же машине, что ant. Возможно это связано с тем, что он стартуется из под Jenkins. Решили, что не страшно. Тестов пока мало и подождать 2 минуты против одной на прогон тестов – не страшно.

Причем, похоже, тесты стартуются паралельно, так как мы сегодня заметили, что один из двух тестов, слушавших один и тот же порт регулярно фэйлился. Решили, что надо принудительно заставить стартовать тест в отдельной java машине. Но запускать одну машину на весь пакет тестов. Сделали. Если раньше прогонялось 170+ тестов, то теперь стало 15. Куда что делось? Курение лога привело к тому, что отдельная java машина для старта junit получает путь к выходному файлу слегка в преобразованном виде. В частности, символ запятая (которая у нас использовалась в имени задачи для Jenkins) преобразуется в прямой слеш. Какие-то не очевидные причинно-следственные связи.

Впрочем, будет уроком. Сам всегда говорю, что не надо использовать знаки пунктуации в именах файлов/папок, а также ни в коем случае – кириллицу, и очень не желательно – пробелы.