Подтвердить что ты не робот

Непрерывная интеграция для проектов Xcode?

После использования Hudson для непрерывной интеграции с предыдущим проектом я хочу настроить сервер непрерывной интеграции для проектов iPhone, над которыми я сейчас работаю. После некоторых исследований, похоже, что нет никаких двигателей CI, разработанных специально для Xcode, но у одного парня был успех с помощью Cruise Control в сочетании с инструментом CLI xcodebuild. Кто-нибудь здесь попробовал это? Существуют ли какие-либо двигатели CI, которые хорошо работают с проектами Xcode?

Я, вероятно, собираюсь попробовать Cruise Control. Я отправлю ответ с моими выводами.

4b9b3361

Ответ 1

Я успешно использую Hudson на mac с xcodebuild. С выпуском 3.0dd sdk у вас есть конкурентный контроль над целью, конфигурацией и sdk, что проект будет построен против.

Это так же просто, как создать шаг сборки в hudson и сообщить xcodebuild для создания проекта:

xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1

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

Распределение приложений для iPhone стало проще

Ответ 2

Возобновление этой темы. Я не нашел удовлетворительного решения для автоматизированной сборки XCode с модульными тестами на сервере сборки, поэтому я провел некоторое исследование и кодирование. Результатом является это сообщение в блоге, объясняющее все это, и этот Ruby script, который преобразует вывод OCUnit из xcodebuild в формат XML, который JUnit использует для отчетов об испытаниях. Сервер сборки, который я выбрал, был Hudson.

Обновление 3/2 2012: я обновил это, чтобы использовать некоторые пользовательские сценарии оболочки для построения и работы. Доступно здесь. Это хорошо не только для непрерывной интеграции, но и из командной строки на вашей собственной машине.

Ответ 3

Adium использует buildbot с Xcode довольно эффективно. Мы написали простой make файл, который вызывает xcodebuild с правильными целями и конфигурациями, но я уверен, что это необязательно.

Ответ 4

Apple просто выпустила (10 июня 2013 г.) для OSX Mavericks (OS X 10.9) новую платформу непрерывной интеграции, которая является наиболее интегрированным решением для непрерывной интеграции, которое я видел раньше. Он доступен на developer.apple.com, здесь, на этой странице, есть данные:

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 9

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

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