如何将Xcode Bot整合编号添加到生成脚本中

我正在用一个Settings.bundle文件创build一个iPad应用程序。 我正在编写构build脚本来显示应用程序版本号和xcode机器人集成号码(不是捆绑版本号)。 我search了networking,找不到任何解决scheme。 这是我得到的:

-- 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 

在构build版本号中,我想用xcode bot集成号replaceCFBundleVersion。

我在我的Xcode项目中使用Shell脚本构build阶段实现了这一点。 就我而言,我使用集成号来设置我的产品的内部版本 。 我的脚本如下所示:

 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_NUMBERXcode Server构build环境中默认存在。 如果您想模拟集成构build(针对此脚本),则可以将其作为自定义variables简单地添加到构build设置中。

实际上,您甚至不需要使用agvtool将内部版本号设置为Xcode机器人集成号。 只需在您的项目设置中将内部版本号设置为$ {XCS_INTEGRATION_NUMBER}即可。

在“ 编译源”步骤之前,我将(+) 运行脚本添加到我的目标构build阶段 。 这一行脚本适用于我将集成号设置为内部版本号。 谢谢凯琳,我只想简化一下。

 [ -z "$XCS_INTEGRATION_NUMBER" ] && echo "Build #0" || xcrun agvtool new-version ${XCS_INTEGRATION_NUMBER} 

我最近偶然发现了同样的问题。 有一个非常实用但又丑陋的方式来获取有关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' 

我也创build了一个stackoverflow的问题,以便find一个更完整和不太hacky的方式来实现这个目标: 注册从collabd像XCSBuildService消息接收Xcode机器人集成号码

但也许parsingxcsbuildd.log如上所述的方式就足够您的目的。