Мы использовали Jenkins с плагином Xcode для непрерывной интеграции наших приложений iOS, включая автоматическое выполнение и отчетность модульных тестов. Это хорошо работало с использованием Jenkins на Linux-машине и ведомого Mac с Xcode 4.6.3.
Теперь мы хотим обновить настройку до Xcode 5 для поддержки целевой iOS 7 и столкнуться с следующими проблемами.
Во-первых, модульные тесты не запускались вообще, потому что мы использовали RunUnitTests script из Xcode 4, который больше не поддерживается в Xcode 5. Я обратился к этому, как рекомендовано Xcode, путем настройки рабочей области с помощью соответствующую схему с целью unit test.
Затем я сконфигурировал шаг Xcode задания Jenkins с настраиваемыми аргументами xcodebuild, установленными на test -destination platform=${DESTINATION_PLATFORM},name=${DESTINATION_NAME},OS=${DESTINATION_OS}
, чтобы заставить его выполнять модульные тесты.
Если я запустил командную строку xcodebuild, что плагин Xcode для Jenkins запускается в Terminal на моем собственном компьютере, тесты модуля выполняются, но когда выполняется задание Jenkins, он либо терпит неудачу, либо зависает при попытке выполнить модульные тесты.
Я подозреваю, что это связано с тем, что с помощью Xcode 5 и тестовой сборки вместо RunUnitTests script теперь в iOS Simulator запускаются модульные тесты, для которых требуется интерактивный сеанс, а подчиненный процесс Jenkins запускается через SSH от мастера Jenkins (Linux). Если я зашел в подчиненную машину с учетной записью, которую использует Jenkins для SSH, я вижу, что iOS Simulator запускается, когда должны выполняться тесты модулей, но тесты не работают и работа зависает. Если я не вошел в подчиненную машину, задание Jenkins не может выполнить модульные тесты.
Есть ли какой-либо способ получить модульные тесты iOS на подчиненном устройстве Jenkins через SSH, а если нет, любые предложения о том, как сохранить автоматизацию выполнения модульных тестов, когда проект должен быть построен с помощью Xcode 5?