Как добавить номер интеграции хоста Xcode в сборку Script
Я создаю приложение iPad с файлом Settings.bundle. Я пишу скрипты сборки, чтобы отобразить номер версии приложения и номер интеграции ботов xcode (а не номер сборки пакета). Я искал в Интернете и не нашел решения. Вот что я получил:
-- Add the app version number
cd $PROJECT_DIR
cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app"
RELEASE_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Info.plist)
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $RELEASE_VERSION" Settings.bundle/Root.plist
-- Add the build version number
BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" Info.plist)
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $BUILD_NUMBER" Settings.bundle/Root.plist
В номере версии сборки я хотел бы заменить CFBundleVersion на число интеграции xcode bot.
Ответы
Ответ 1
Я реализовал это, используя Shell Script Фаза сборки в моем проекте Xcode. В моем случае я использовал номер интеграции для установки внутренней версии моего встроенного продукта. Мой Script выглядит следующим образом:
if [ "the$XCS_INTEGRATION_NUMBER" == "the" ]; then
echo "Not an integration build…"
xcrun agvtool new-version "10.13"
else
echo "Setting integration build number: $XCS_INTEGRATION_NUMBER"
xcrun agvtool new-version "$XCS_INTEGRATION_NUMBER"
fi
Обратите внимание, что XCS_INTEGRATION_NUMBER
существует по умолчанию в среде сборки Xcode Server. Если вы хотите имитировать сборку интеграции (для целей этого script), вы можете просто добавить его в свои настройки сборки в качестве настраиваемой переменной.
Ответ 2
На самом деле вам даже не нужен agvtool, чтобы установить номер сборки в номер интеграции ботов Xcode. Просто установите номер сборки в ${XCS_INTEGRATION_NUMBER} в настройках вашего проекта.
Ответ 3
Я добавил (+) a Запустить Script для моих целей Фаза сборки непосредственно перед шагом Скомпилировать источники. Эта одна строка script работает для меня, чтобы установить номер интеграции как номер сборки. Спасибо Kaelin, я просто хотел немного упростить вещи.
[ -z "$XCS_INTEGRATION_NUMBER" ] && echo "Build #0" || xcrun agvtool new-version ${XCS_INTEGRATION_NUMBER}
Ответ 4
Я недавно наткнулся на ту же проблему.
Существует очень прагматичный, но уродливый способ получения информации о последнем номере интеграции Xcode Bots:
sudo grep -r "integration =" /Library/Server/Xcode/Logs/xcsbuildd.log | tail -1 | cut -d'=' -f 2| cut -d';' -f 1 |tr -d '\040\011\012\015'
Я также создал вопрос stackoverflow, чтобы найти более интегрированный и менее хакерский способ достижения этой цели:
Зарегистрировать сообщения из collabd, такие как XCSBuildService, для получения номера интеграции Xcode Bots
Но, возможно, способ для синтаксического анализа xcsbuildd.log, как описано выше, достаточно для ваших целей.