Как стать автором
Обновить

Комментарии 17

А можно настроить письмо таким образом, чтобы там отправлялась ссылка на сборку?
Чтобы можно было из почты сразу ставить приложение, открыв письмо на телефоне
сам занимался подобной системой (никак руке не дойдут оформить статью), мы поначалу использовали переписанный под свои нужды iOSBetaBuilder (добавлен консольный режим), далее просто загружали ipa, manifest и html страничку ссылкой на манифест для скачивания. Так вот, ссылка на html всегда была одна и та же (просто добавили в избранное на железках).
Но со временем отказались, в пользу hockeyapp.net
Можно
Можно в общем шаблоне прописать ссылку с параметром, например mydomain.ru/${JOB_NAME}/index.html

А можно для каждой отдельной задачи в Jenkins под кнопкой Advanced для каждого триггера поменять шаблон — например, на успешную сборку слать ссылку, а на сломанную — нет.
Воспользуйтесь для этого testflight.
После успешной сборки полученные артефакты тем же скриптом отправлюются на тестфлай в соотвествии с описанным API: https://testflightapp.com/api/doc/

В самом тестфлает нужно настроить группу пользователей, которые будут получать уведомление о загруженной сборке.
Мы как раз сделали динамическую генерацию манифеста и странички (писал об этом тут: habrahabr.ru/post/175203/#first_unread )
А теперь вот идея появилась, что ссылку можно и почтой отправлять
А мы читали вашу статью :)
У нас похожий способ генерации страничек, выращенный из iOSBetaBuilder, но мы в статье делали упор на два Xcode — в преддверии так сказать :) ну и в целом инструкция — вещь полезная.

Еще недавно находили идею — сделать мобильное приложение для получения Push-уведомений, и с Jenkins слать ссылки на него. Мне кажется, пуши лучше подходят для тестировщиков, письма — для менеджеров и заказчиков.

Но это тема для отдельной статьи.
а почему нельзя скопировать старый сдк (см /Applications/Xcode/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ ) и добавить в новый хкод? а далее разруливать параметром sdk
iOS 6.1 -sdk iphoneos6.1
iOS 7.0 -sdk iphoneos7.0
Потому что в каждом SDK по отдельности не содержится тулчейн (компилятор и его друзья), он общий для всех SDK в XCode. Скопировав SDK из другой версии XCode, можем поймать много веселых проблем в системных заголовочных файлах.
там же образом доставляется симулятор из настроек хкода. можно пример проблемы?
Проблемы у меня были когда я таким методом доставлял OSX 10.6 SDK в XCode 4.3. Были ошибки где-то в системных заголовочных файлах.

SDK рассчитаны для сборки определенной версией компилятора, с другими версиями никто не тестировал, проблемы возможны, хотя и не гарантированы.
симуляторы то как раз качаются одни и теже (можно проверить по контрольным суммам образов в кеше хкода). Но в общем идея ясна. Спасибо
> cat /Users/jenkins/pass | sudo xcode-select -switch /Applications/XcodeVX.X.app/Contents/Developer
а не лучше ли настроить sudoers? по моему, это как-то более правильный путь. И пароль в этом случае не надо светить в конфигурации сборки.
Сколько не пытались решить проблему через /etc/sudoers ничего толком не получилось. В линуксе такое без проблем решается, а в макоси все как-то иначе.
Все без проблем решается. Ничуть не отличается от Linux. У меня все работает.
Если не хочется писать пароль в файл, а это проще для начинающих, можно внести в файл sudoers строчку
username ALL=NOPASSWD: /usr/bin/xcode-select

В нашем случае:
jenkins ALL=NOPASSWD: /usr/bin/xcode-select

но если доступ к jenkins ограничен, то можно использовать и файл, увидеть его содержимое можно только если есть доступ к Jenkins или собственно к машине с Xcode.
Спасибо.
Слона то я и не приметил :)
AFAIK xcode-select в вашем случае не нужен, достаточно запускать xcodebuild c полным путем (Ex: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild, в каждом XCode есть свой xcodebuild, помимо копии в /usr/bin/xcodebuild).

Как это сделать при помощи XCode-плагина для Jenkins я не знаю, мы запускали при помощи Jenkins shell-скрипт, который в свою очередь вызывал xcodebuild.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий