11

首先,我有一个 Mac Mini 在 Mavericks 上运行服务器并安装了 Xcode 5。在服务器上,我使用 Bots 设置了我的 iOS 项目,以便在每次提交到 master 时运行我的 Github 存储库的自动构建。我想知道是否有人已经配置了这种设置来处理发送到 TestFlight 的自动构建。

之前与 Jenkins 构建过程一起使用的脚本粘贴在下面,但在机器人完成构建时会引发错误并且不会上传。我让这个脚本在我的应用程序存档过程的“后操作”上运行。

服务器日志错误:

打印:条目,“CFBundleVersion”,不存在

错误:指定的应用程序不存在或不是捆绑目录:'/Library/Server/Xcode/Data/BotRuns/Cache/s892fj1n2-f4bb-2514-522v-2a23d0f0c725/DerivedData/Build/Products/Debug-iphoneos/我的应用程序.ipa'

脚本:

 PLIST_FILE=$(echo -n "${SRCROOT}/${INFOPLIST_FILE}")
 BUILD_TYPE=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PLIST_FILE}")
 API_TOKEN="<API_TOKEN>"
 TEAM_TOKEN="<SECRET>"

 APP="${BUILD_ROOT}/Debug-iphoneos/${FULL_PRODUCT_NAME}"

/bin/rm "/bots/${PRODUCT_NAME}.ipa"
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP}" -o "/bots/${PRODUCT_NAME}.ipa"

/usr/bin/curl "http://testflightapp.com/api/builds.json" \
-F file=@"/bots/${PRODUCT_NAME}.ipa" \
-F a      pi_token="${API_TOKEN}" \
-F team_token="${TEAM_TOKEN}" \
-F notes="Build uploaded automatically from server." \
-F distribution_lists="internal"

更新 11/20:

一个很好的尝试资源: TestFlight Bots

几周前我没有让它工作,但自从我上次尝试以来,这篇文章已经更新了。

4

2 回答 2

0

我正在研究如何将我的团队从 iOS 构建的 Jenkins 农场切换到新的 Xcode 机器人服务器。在成功的 CI 构建/测试后,关于持续部署,我有一个非常相似的问题需要解决。

我没有答案(还),但是,想分享一些我发现可能对你有帮助的东西。

两个线程可能有助于为您的 TestFlight 上传在机器人服务器上失败的原因提供线索。

根据 Kra Larivain 的这篇关于 CocoaPods CLI 和 Xcode 机器人的帖子

  • “构建作为没有 shell 的非特权用户在 bot 上运行(带有 /usr/bin/false 作为 shell 的 _teamsserver)”

  • “添加_teamsserver到无密码的 sudoers(%_teamsserver ALL=(ALL) NOPASSWD: ALL在您的 sudoers 文件中)。您可能想要更聪明一点,只授予它 sudo 权限”以获取实际需要的命令

  • /Library/Server/Xcode/Data_teamsserver仅由用户设置为 rw

  • “将以下脚本添加到您的预操作中,BUILD_USER您的构建用户在哪里。确保您Provide build settings from是主要目标,SRCROOT否则不会设置(默认为None)。” 此示例适用于 CocoaPods,但可以适应您的使用

if [ `whoami` = '_teamsserver' ]; then
echo "running pod install as part of CI build"
chmod 777 /Library/Server/Xcode/Data
cd ${SRCROOT}
rm ./Podfile.lock
rm -rf ./Pods
sudo chown -R BUILD_USER .
sudo -H -u BUILD_USER pod install
sudo chown -R _teamsserver .
fi

你可能已经看过了,但是,对于其他人来说,这是值得一提的。查看 Justin Miller关于 Xcode 和 testflight 存档后操作的帖子,以便与您的脚本进行比较。

祝你好运!史蒂夫

于 2013-11-15T19:25:47.987 回答
0

这看起来像一个权限问题。您可以访问 \Library\XCode\Data 文件夹吗?我能够运行您的脚本(上传到 testflight 除外)。我必须授予对 \Data 的读取权限和对目标文件夹的写入权限,然后我看到了创建的 ipa。

于 2013-10-29T18:03:44.653 回答