Обновление сертификатов на блид сервере

от автора


Во многих компаниях используют Continuous Integration.
Например в Git может быть три ветки: customer, master, test.
Пуш в customer или test инициирует создание сборки, а также ее доставку на устройства заказчика или тестировщиков.

Для распространения тестовых сборок на iOS, используются Ad Hoc профайлы. Суть в том, что сборка должна быть подписана профайлом, в котором указан UUID устройств на которых она может быть установлена.

Процедура добавления/удаления устройства в Ad Hoc профайл, требует его пересоздания. После того, как профайл обновлен, он должен быть установлен на сборочный нод (компьютер на котором собирается сборка). Обычно процедура обновления профайла выполняется через Xcode, что требует доступ к сборочному ноду через VNC и непосредственного участия человека.

К счастью все можно автоматизировать, в том числе и процесс обновления профайлов при запуске сборки.

Насколько мне известно, есть два способа автоматизировать обновление профайла с использованием Jenkins.

Храним профайл в репозитории

1. Скачиваем с Apple Dev Center нужный профайл и кладём в Git как «profiles/customer.mobileprovision».
2. В настройках сборки в поле Embedded Profile пишем путь «profiles/customer.mobileprovision».
3. В XCode для соответствующей конфигурации в Build Settings выбираем профайл — None и identity — automatic

Обновляем профайл перед сборкой

Очень хороший человек по имени Matt Thompson (рекомендую его Блог) создал клиент для работы с Apple Dev Center из консоли. Клиент называется Cupertino, написан на Ruby и ставится одной строчкой:

gem install cupertino 

Теперь можно не класть «profiles/customer.mobileprovision» в Git, а вместо этого прописать в bash скрипте что-то вроде:

rm -rf profiles mkdir profiles update_cert "TestCert" profiles/customer.mobileprovision 

Аналогично предыдущему способу, надо в XCode для соответствующей конфигурации в Build Settings выбрать профайл — None и identity — automatic.

Скрипт update_cert выглядит так:

#!/bin/bash  if [ ! $# == 2 ]; then 	echo "Usage: $0 (certificate name) (file name)" 	exit fi   cert_name=$1 new_file_name=$2  res=`ios profiles:download "${cert_name}" --username some_user_name --password some_password --team some_team_name -type distribution`   if [ $? -gt 0 ]; then     echo "ERROR!"     exit fi  echo "$res" file_name=$(echo "$res" | cut -d"'" -f 2)  mv "${file_name}" "${new_file_name}" 

Можно обойтись без update_cert, но в этом случае имя скаченного сертификата будет таким же как и в Apple Dev Center.

Очевидно, что скрипты можно доработать под свои нужды. Например в случае, если нельзя скачать сертификат (проблема с сетью), то использовать имеющийся и прочее.

Заключение

Автообновление профайлов это просто и удобно. Используйте на здоровье.)

ссылка на оригинал статьи http://habrahabr.ru/company/e-Legion/blog/203426/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *