ios - 注册来自 collabd 的消息,例如 XCSBuildService 以接收 Xcode Bots 集成号

标签 ios xcode jenkins continuous-integration bots

在 Xcode Bots 构建过程中,每次运行都会分配一个集成编号。此数字不会显示在构建日志中,但可以方便地创建返回到 CI 环境或企业应用程序商店中构建的单个 Xcode Bots 的 http 链接。

/Library/Server/Xcode/Logs/xcsbuildd.log 我发现 XCSBuildServicecollabd 获取消息/事件包含集成编号的结构。

有没有办法在自己的 (OSX) 程序中注册同一事件并接收此消息/事件?


到目前为止,我发现获取 Xcode Bots 集成号的唯一丑陋方法是解析 xcsbuildd.log 文件,缺点是我无法确定最新的集成号是否与当多个构建并行执行时,我当前的构建。 此日志文件也位于一个读保护文件夹/文件中,因此我必须更改权限(呃!)或使用 sudo(我真的不想那样做)!?

示例:

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-post-action,它将创建一个文件 (例如/Library/Server/Xcode/Data/BotRuns/Cache/22016b1e-2f91-4757-b3b8 -322233e87587/source/integration_number.txt) 使用集成编号,无需 sudo。 Xcode Bots 似乎序列化了不同的构建,因此它们不会并行执行,因此可以使用文件中创建的集成号。

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' >  ${PROJECT_DIR}/integration_number.txt

最佳答案

对于获取集成版本号的具体情况,我添加了一个简单的答案 here .

重复一遍(并避免将此作为单行答案否决):


我在我的 Xcode 项目中使用 Shell Script Build Phase 实现了这一点。在我的例子中,我使用集成号来设置我构建的产品的内部版本。我的脚本如下所示:

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 构建环境中。如果您想模拟集成构建(出于此脚本的目的),您只需将其作为自定义变量添加到build设置中即可。

关于ios - 注册来自 collabd 的消息,例如 XCSBuildService 以接收 Xcode Bots 集成号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875979/

相关文章:

swift - 两个 UIView 共享几乎相同的 UIViewController

git - 将多个 git repos check out 到同一个 Jenkins 工作区

git - 成功构建 Jenkins 后,如何将更改从一个分支推送到另一个分支?

git - 在 Github 上触发特定的 Jenkins 作业推送到特定目录

ios - 获取 NSURL 到子目录中的文件

ios - 将 ipa 文件上传到应用商店连接时卡住了

ios - Xcode - 按语言更改 bundle 显示名称

ios - 属性 'self.menuViewController' 未在 super.init 调用时初始化

XCode 和 CUDA 集成

ios - 在 Xcode 中激活自定义字体的目标成员身份