Xcode Bot:如何在后触发脚本上获取 .ipa 路径?

Posted

技术标签:

【中文标题】Xcode Bot:如何在后触发脚本上获取 .ipa 路径?【英文标题】:Xcode Bot: how to get .ipa path on a post trigger script? 【发布时间】:2016-02-24 15:00:12 【问题描述】:

我正在使用机器人存档 ios 应用,我需要获取 .ipa 产品路径才能将其发布到我们的分发系统中。

机器人设置:

使用脚本打印所有环境变量,其中不包含 ipa 文件的路径。另外,有些变量指向了不存在的目录,即:XCS_OUTPUT_DIR

这里是环境变量输出:

XCS=1
XCS_ANALYZER_WARNING_CHANGE=-31
XCS_ANALYZER_WARNING_COUNT=0
XCS_ARCHIVE=/Library/Developer/XcodeServer/Integrations/Integration-771867708dfac45bba10a1998c118912/MyApp.xcarchive
XCS_BOT_ID=771867708dfac45bba10a1998c007d43
XCS_BOT_NAME='MyApp Distribution'
XCS_BOT_TINY_ID=DBB85BD
XCS_DERIVED_DATA_DIR=/Library/Developer/XcodeServer/Integrations/Caches/771867708dfac45bba10a1998c007d43/DerivedData
XCS_ERROR_CHANGE=-1
XCS_ERROR_COUNT=0
XCS_INTEGRATION_ID=771867708dfac45bba10a1998c118912
XCS_INTEGRATION_NUMBER=19
XCS_INTEGRATION_RESULT=warnings
XCS_INTEGRATION_TINY_ID=F7D4469
XCS_OUTPUT_DIR=/Library/Developer/XcodeServer/Integrations/Integration-771867708dfac45bba10a1998c118912
XCS_SOURCE_DIR=/Library/Developer/XcodeServer/Integrations/Caches/771867708dfac45bba10a1998c007d43/Source
XCS_TESTS_CHANGE=0
XCS_TESTS_COUNT=0
XCS_TEST_FAILURE_CHANGE=0
XCS_TEST_FAILURE_COUNT=0
XCS_WARNING_CHANGE=0
XCS_WARNING_COUNT=26
XCS_XCODEBUILD_LOG=/Library/Developer/XcodeServer/Integrations/Integration-771867708dfac45bba10a1998c118912/xcodebuild.log
XPC_FLAGS=0x0
XPC_SERVICE_NAME=com.apple.xcsbuildd

除此之外,我能够确认 .ipa 文件正在另一个文件夹 (<path to server>/IntegrationAssets/<integration id>/<integration number>/) 中创建,但无法从 env 变量访问该路径。

有什么想法吗?

【问题讨论】:

【参考方案1】:

好吧,经过大量研究和测试,显然最新的 Xcode (7.2) + 服务器版本 (5.0.15) 中的机器人有问题,没有加载正确的环境变量。

我目前的解决方案是根据现有的环境变量手动创建路径:

ARCHIVE_PATH="$XCS_ARCHIVE"
ARCHIVE_NAME="$ARCHIVE_PATH##*/"
IPA_NAME="$ARCHIVE_NAME%.*.ipa"
IPA_PATH="$XCS_OUTPUT_DIR/ExportedProduct/Apps/$IPA_NAME"

我所做的基于: Continuous integration Xcode Server after trigger $XCS_PRODUCT not set

【讨论】:

【参考方案2】:

只是一个小更新——在 Xcode 9.4.1 中,至少 $XCS_PRODUCT 设置正确,所以你可以使用它,例如。 G。对于 HockeyApp:

curl -F "status=2" -F "notify=1" -F "ipa=@$XCS_PRODUCT" -H "X-HockeyAppToken: <token>" https://rink.hockeyapp.net/api/2/apps/upload

【讨论】:

以上是关于Xcode Bot:如何在后触发脚本上获取 .ipa 路径?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Bot 预集成触发期间 Python 脚本失败

集成后的 Xcode 6 Bot 将 .archive 文件下载到位置

如何从 xcode bot 生成 .ipa?

如何在集成脚本之前取消/中止 XCode Bot 集成

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

Xcode CI - 用于上传到 Fabric 的 Bot 脚本给出错误“无法检测构建环境”