Непрерывная интеграция для проектов XCode?
-
03-07-2019 - |
Вопрос
После использования Hudson для непрерывной интеграции с предыдущим проектом я хочу настроить сервер непрерывной интеграции для проектов iPhone, над которыми я сейчас работаю. После некоторых исследований выясняется, что никаких движков CI, разработанных специально для XCode, не было, но один из них добился успеха XcodeOnCC.rdoc "rel =" noreferrer "> с использованием Cruise Control в сочетании с инструментом CLI xcodebuild . Кто-нибудь здесь пробовал это? Существуют ли какие-либо механизмы CI, которые хорошо работают с проектами Xcode?
Я, вероятно, собираюсь попробовать Круиз-контроль. Я опубликую ответ с моими выводами.
Решение
Я успешно использую Hudson на Mac с xcodebuild. С выпуском 3.0 iPhone SDK у вас есть полный контроль над целью, конфигурацией и SDK, против которых будет построен проект. Р>
Это так же просто, как создание шага сборки в hudson и указание xcodebuild для сборки проекта:
xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1
Предварительная работа окупилась для меня, так как мои сборки просто работают без каких-либо дополнительных размышлений. Я написал подробное описание в своем блоге, если кому-то интересно.
Другие советы
Воскрешение этой темы. Я не нашел удовлетворительного решения для получения автоматических сборок XCode с помощью модульных тестов на сервере сборки, поэтому я провел некоторое исследование и кодирование. Результатом является этот пост в блоге , объясняющий все это и этот сценарий Ruby , который преобразует выходные данные OCUnit из xcodebuild в формат XML, который JUnit использует для отчетов о тестировании , Сервер сборки, который я выбрал, был Hudson .
Обновление 3/2 2012: я обновил это, чтобы использовать несколько пользовательских сценариев оболочки для сборки и запуска. Доступно здесь . Это хорошо не только для непрерывной интеграции, но и для сборки из командной строки на вашем собственном компьютере.
Adium довольно эффективно использует buildbot с Xcode. Мы написали простой make-файл, который вызывает xcodebuild с правильными целями и конфигурациями, но я уверен, что это необязательно.
Apple только что выпустила (10 июня 2013 г.) для OSX Mavericks (OS X 10.9) новую платформу непрерывной интеграции, которая является наиболее интегрированным решением непрерывной интеграции, которое я когда-либо видел. Это доступно от developer.apple.com, здесь на этой странице есть детали:
Я рекомендую посмотреть презентацию wwdc 2013 по этой теме.
Я использовал CruiseControl с XCode (аналогично тому, что предложил Pragmatic Automation) и добился разумного успеха. Я также очень хорошо знаком с CruiseControl, и это относительно ужасная настройка формата конфигурации.
Я также хорошо использовал BuildBot, но обнаружил, что его сильные стороны не совсем соответствуют моим потребностям (создание распределенных ведомых устройств и отчетность по нескольким различным системам). Конфигурирование настроек buildbot само по себе может быть искусством, хотя это и не сложно. Это все по сути написание сценариев на Python.
Поскольку Hudson стал доступен, я рекомендую его как средство для непрерывной интеграции. Он имеет веб-интерфейс (основной недостаток CruiseControl, на мой взгляд) и очень гибок в различных системах, которые он поддерживает. Вы можете вызывать сборки, управляемые из командной строки, довольно легко и совершенно очевидно. Тем не менее, я не настроил экземпляр, использующий Hudson и XCode, как у меня для других систем, так что это отчасти спекуляция с моей стороны.
Я думаю, ты все еще должен использовать Хадсон. Хадсон очень гибок и позволяет вам также использовать сценарии оболочки для создания: "nofollow noreferrer"> Сценарии оболочки и пакетные команды Windows
Просто введите туда xcodebuild. Взгляните на справочную страницу xcodebuild, чтобы увидеть опции xcodebuild.
Если вы не против жить на переднем крае, я только что совершил построитель xcode для CruiseControl.
Дженкинс, похоже, хорошо работает для некоторых людей. (Хотя я никогда раньше не использовал CI-сервер.)
Дженкинс работает отлично. Вы можете либо создать свой проект xcode, написав свой собственный скрипт оболочки, а затем разрешить его запускать Jenkins, либо использовать плагин xcode.
Но вы должны знать о проблеме с авторитетом. С небольшими изменениями в конфигурации Jenkins вы сможете управлять своим CI-сервером за очень короткое время.