Вопрос

После использования 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

Предварительная работа окупилась для меня, так как мои сборки просто работают без каких-либо дополнительных размышлений. Я написал подробное описание в своем блоге, если кому-то интересно.

Упростить распространение приложений для iPhone

Другие советы

Воскрешение этой темы. Я не нашел удовлетворительного решения для получения автоматических сборок 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, здесь на этой странице есть детали:

https://developer.apple.com/library / ИОС / документация / Иды / Концептуальное / xcode_guide-continuous_integration /

Я рекомендую посмотреть презентацию wwdc 2013 по этой теме.

Я использовал CruiseControl с XCode (аналогично тому, что предложил Pragmatic Automation) и добился разумного успеха. Я также очень хорошо знаком с CruiseControl, и это относительно ужасная настройка формата конфигурации.

Я также хорошо использовал BuildBot, но обнаружил, что его сильные стороны не совсем соответствуют моим потребностям (создание распределенных ведомых устройств и отчетность по нескольким различным системам). Конфигурирование настроек buildbot само по себе может быть искусством, хотя это и не сложно. Это все по сути написание сценариев на Python.

Поскольку Hudson стал доступен, я рекомендую его как средство для непрерывной интеграции. Он имеет веб-интерфейс (основной недостаток CruiseControl, на мой взгляд) и очень гибок в различных системах, которые он поддерживает. Вы можете вызывать сборки, управляемые из командной строки, довольно легко и совершенно очевидно. Тем не менее, я не настроил экземпляр, использующий Hudson и XCode, как у меня для других систем, так что это отчасти спекуляция с моей стороны.

Я думаю, ты все еще должен использовать Хадсон. Хадсон очень гибок и позволяет вам также использовать сценарии оболочки для создания: "nofollow noreferrer"> Сценарии оболочки и пакетные команды Windows

Просто введите туда xcodebuild. Взгляните на справочную страницу xcodebuild, чтобы увидеть опции xcodebuild.

Если вы не против жить на переднем крае, я только что совершил построитель xcode для CruiseControl.

Дженкинс, похоже, хорошо работает для некоторых людей. (Хотя я никогда раньше не использовал CI-сервер.)

https://wiki.jenkins-ci.org/display/JENKINS/ Xcode + плагин

Дженкинс работает отлично. Вы можете либо создать свой проект xcode, написав свой собственный скрипт оболочки, а затем разрешить его запускать Jenkins, либо использовать плагин xcode.

Но вы должны знать о проблеме с авторитетом. С небольшими изменениями в конфигурации Jenkins вы сможете управлять своим CI-сервером за очень короткое время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top