Пожалуйста, опишите ошибку

Нашли баг? Помогите нам его исправить, заполнив эту форму

Как мы настраивали CI

Георгий Кирий
iOS-разработчик

Когда компания развивается до определенного уровня, то суммарные затраты времени на сборку и выкладывание билдов становятся достаточно весомыми, тогда-то и встает вопрос об автоматизации этого процесса.

ci_large

Наша компания использует JenkinsCI для автоматизации сборок и дистрибуции. Про сборку iOS и Android приложений при помощи него написано уже не мало статей (iOS, Android), чего не скажешь о дистрибуции. Этим опытом и хотелось бы поделиться.

Одна из задач, стоявших перед нами, была выгрузка сборок в новый TestFlight. Решается эта задача достаточно просто, но найти это решение было не так-то легко.

Что потребуется:

  1. Jenkins
  2. Mac slave
  3. Свежий Xcode на нем

Дело в том что Xcode содержит Application Loader, который, в свою очередь, содержит консольную утилиту altool, которая и выполняет задачу валидации и отправки в TestFlight.

Из коробки она не работает, так как в какой-то момент обращается к itms в месте, где его нет, а точнее /usr/local. Поэтому сделаем символическую ссылку:

sudo ln -s /Applications/Xcode.app/Contents/Applications/Application\
Loader.app/Contents/itms /usr/local/itms

Теперь можно валидировать собранные .ipa файлы следующим образом:

/Applications/Xcode.app/Contents/Applications/Application\
Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -f path/to/file.ipa -u -p -v

А отправлять сборки в TestFlight таким:

/Applications/Xcode.app/Contents/Applications/Application\
Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -f path/to/file.ipa -u -p --upload-app

E-mail и пароль естественно от iTunesConnect.

Можно добавить в PATH путь до утилиты, тогда команда примет следующий вид:

altool -f path/to/file.ipa -u -p --upload-app

Вот и все, сделав это заключительными шагами сборки, мы получаем решение задачи.

Читать и комментировать