2012-05-31 3 views
8

Контекст: Мой проект содержит два серверных сервера, один для разработки и один для производства. Каждый раз, когда я делаю сборку для QA, мне нужно будет установить сервер, на котором установлена ​​сборка на TestFlight (это нормально). Но в моем списке архивов на Xcode я легко могу получить более 100 архивов, где мне нужно вручную поставить его, если он был prod или dev-сервером.Xcode: Создание автоматического комментария к архиву

Основная проблема здесь, когда QA необходимо откат к определенной версии на определенном сервере.

Вопрос: Есть ли автоматический способ оставить комментарий к архиву при строительстве? Я хотел бы поставить что-то вроде:

[Номер сборки] - [Dev | Живое] Сервер

Благодарности

+1

Используйте систему непрерывной интеграции, например, [Дженкинс] (http://jenkins-ci.org/) для выполнения таких задач. – Till

+0

Как упоминалось @Till, я закончил использование Jenkins с несколькими схемами. –

ответ

1

Мы используем следующую команду, чтобы добавить комментарий к архиву непосредственно после сборки (xcodebuild):

/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_DIR/Info.plist" 

с $ ARCHIVE_DIR быть каталог в архив в вопросе, е. g .:

ARCHIVE_DIR=`ls -dt1 $HOME/Library/Developer/Xcode/Archives/*/*.xcarchive |head -n1` 
1

Я пробовал идею Нормана, но не смог заставить синтаксис работать. В конце концов я использовал:

ARCHIVE_DIR=$(ls -dt1 $HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/Info.plist |head -n1) 
/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_DIR" 
+0

Это работает, но если у вас есть схема архива, чтобы автоматически открывать Организатор, новый комментарий отражается только в пользовательском интерфейсе Организатора после перезапуска Xcode. Кроме того, вы можете отключить настройку, чтобы автоматически открыть Организатор. Затем, когда вы вручную открываете Организатор, пользовательский интерфейс будет отображать ваш добавленный комментарий. – jonsibley

1

Привет на основе других ответов я что-то вроде этого:

  1. нажмите на иконку проекта избранных «Редактировать Схема ...»
  2. выберите «Архив/Пост-действия»
  3. нажмите„+“„действие сценария New Run“
  4. Изменить„Обеспечение параметров сборки от“до желаемого проекта
  5. Выбор оболочки
  6. паста этот скрипт (в предположении, что мерзавец используется):
cd "$PROJECT_FILE_PATH" 
BRANCH=$(basename `git describe --all`) 
COMMIT_HASH=$(git rev-parse HEAD | awk '{print substr($0,0,7)}') 
ARCHIVE_PATH=$(dirname "$ARCHIVE_PRODUCTS_PATH") 
ARCHIVE_NAME=${ARCHIVE_PATH}/Info.plist 
DEST_DIR="<desired destination path>" 

/usr/libexec/PlistBuddy -c "Add :Comment string \"${BRANCH}_${COMMIT_HASH}\"" "$ARCHIVE_NAME" 

if [ -d "$DEST_DIR" ]; then 
    PACKAGE_NAME=$DEST_DIR/${BRANCH}_${COMMIT_HASH}_${PRODUCT_NAME} 

    xcodebuild -sdk $SDKROOT -archivePath "$ARCHIVE_PATH" -exportPath "$PACKAGE_NAME" -exportFormat ipa -exportArchive -exportProvisioningProfile "your provisioning profile name" 
fi 

Преимущество на другое решение, что архив локализованным на основе переменной XCode не основана на поиске (ненужных накладных расходов).

1

Нашел это старое сообщение после поиска в Интернете, и его очень раздражало проблема обновления органайзера, и у него была очень уродливая идея. На самом деле, организатор автоматически обновляется при обновлении FS.

, поэтому я просто попытался переместить архив после обновления его plist, а затем вернул его в исходное местоположение. Что-то вроде этого:

ARCHIVE_PATH=$(dirname "$ARCHIVE_PRODUCTS_PATH") 
ARCHIVE_PLIST=${ARCHIVE_PATH}/Info.plist 

/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_PLIST" 

mv "$ARCHIVE_PATH" "$ARCHIVE_PATH"_TMP 
sleep 1 
mv "$ARCHIVE_PATH"_TMP "$ARCHIVE_PATH" 

Сон необходим, чтобы содержимое папки OS X обновления. Вы увидите, что архив исчезнет, ​​а затем снова появится.

Надеюсь, это поможет.

Смежные вопросы