如何将Xcode Bot集成号添加到构建脚本中

iDe*_*Dev 13 xcode continuous-integration bots build-script ios

我正在创建一个带有Settings.bundle文件的iPad应用程序.我正在编写构建脚本来显示应用程序版本号和xcode bot集成号(而不是bundle build number).我在网上搜索过,找不到任何解决方案.这是我得到的:

-- 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
Run Code Online (Sandbox Code Playgroud)

在构建版本号中,我想用xcode bot集成号替换CFBundleVersion.

Kae*_*ure 16

我在我的Xcode项目中使用Shell脚本构建阶段实现了这一点.就我而言,我使用集成号来设置我构建产品的内部版本.我的脚本看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

请注意,Xcode Server构建环境中XCS_INTEGRATION_NUMBER默认存在.如果要模拟集成构建(出于此脚本的目的),您只需将其作为自定义变量添加到构建设置中.


小智 8

您实际上甚至不需要agvtool来将构建号设置为Xcode bot集成号.只需在项目设置中将内部版本号设置为$ {XCS_INTEGRATION_NUMBER}即可.


小智 5

我在编译源步骤之前向我的目标Build Phase添加了(+)一个Run Script.这一行脚本适用于我将集成号设置为内部版本号.谢谢凯琳,我只是想简化一下.

[ -z "$XCS_INTEGRATION_NUMBER" ] && echo "Build #0" || xcrun agvtool new-version ${XCS_INTEGRATION_NUMBER}
Run Code Online (Sandbox Code Playgroud)