Xcode 服务器:关键目标错误,预期上传,找到导出
Xcode Server: error for key destination, expected upload, found export
我正在使用 Xcode 11 和 Xcode 服务器来尝试构建我的应用并将其上传到 TestFlight。我试图使用自定义 ExportOptions.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>teamID</key>
<string>YOUR_TEN_CHARACTER_TEAM_ID</string>
<key>destination</key>
<string>upload</string>
</dict>
</plist>
但随后我收到一条错误消息,指出 "Upload" 服务器不支持 Xcode。在线建议将其保留为 "Export" 并使用它在 post-集成脚本中上传:
altool --upload-app -f $XCS_PRODUCT -u <username> -p <app-specific password>
所以我这样做了,并且尝试将机器人设置为使用:
- 存档导出:可安装产品
- 存档导出:可安装产品和精简变体
而不是自定义 plist。但是现在我的存档步骤在到达触发器之前失败并出现以下错误:
Build Service Error: exportArchive: exportOptionsPlist error for key 'destination': expected one of {upload}, but found export
我试过移除触发器以查看它是否导致了问题,但事实并非如此。现在我的机器人只是试图存档和导出项目,我收到关于目标应该上传的错误...这是不支持的。
存档应用程序并从 "Distribute app" 手动上传工作正常。
如有任何帮助,我们将不胜感激。我希望在不添加更多工具的情况下做到这一点,因为它本身应该是可能的。
如评论中所述,这可能是 Xcode 服务器中的错误。
由于 Xcode 项目已经创建了一个存档,一个可行的选择是禁用 bot 中的导出,并使用 Post-集成脚本触发器导出 ipa 文件。这可以上传到 App Store Connect。
脚本如下所示:
#!/bin/sh
/usr/bin/xcodebuild -exportArchive -archivePath ${XCS_ARCHIVE} -exportPath "${XCS_DERIVED_DATA_DIR}" -exportOptionsPlist ${XCS_SOURCE_DIR}/someconfdir/export.plist
/usr/bin/xcrun altool --upload-app --type ios --file "${XCS_DERIVED_DATA_DIR}/appname.ipa" --username "xxx@y.z" --password "xxx"
您需要一种方法让 Xcode 服务器可以访问 export.plist。一种选择是将其与源代码一起检入,因此上面的脚本使用 XCS_SOURCE_DIR 变量在某个配置文件夹中找到它。
它应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>teamID</key>
<string>xxx</string>
<key>method</key>
<string>app-store</string>
<key>uploadSymbols</key>
<true/>
<key>provisioningProfiles</key>
<dict>
<key>bundleid</key>
<string>profilename</string>
</dict>
</dict>
</plist>
我正在使用 Xcode 11 和 Xcode 服务器来尝试构建我的应用并将其上传到 TestFlight。我试图使用自定义 ExportOptions.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>teamID</key>
<string>YOUR_TEN_CHARACTER_TEAM_ID</string>
<key>destination</key>
<string>upload</string>
</dict>
</plist>
但随后我收到一条错误消息,指出 "Upload" 服务器不支持 Xcode。在线建议将其保留为 "Export" 并使用它在 post-集成脚本中上传:
altool --upload-app -f $XCS_PRODUCT -u <username> -p <app-specific password>
所以我这样做了,并且尝试将机器人设置为使用:
- 存档导出:可安装产品
- 存档导出:可安装产品和精简变体
而不是自定义 plist。但是现在我的存档步骤在到达触发器之前失败并出现以下错误:
Build Service Error: exportArchive: exportOptionsPlist error for key 'destination': expected one of {upload}, but found export
我试过移除触发器以查看它是否导致了问题,但事实并非如此。现在我的机器人只是试图存档和导出项目,我收到关于目标应该上传的错误...这是不支持的。
存档应用程序并从 "Distribute app" 手动上传工作正常。
如有任何帮助,我们将不胜感激。我希望在不添加更多工具的情况下做到这一点,因为它本身应该是可能的。
如评论中所述,这可能是 Xcode 服务器中的错误。
由于 Xcode 项目已经创建了一个存档,一个可行的选择是禁用 bot 中的导出,并使用 Post-集成脚本触发器导出 ipa 文件。这可以上传到 App Store Connect。
脚本如下所示:
#!/bin/sh
/usr/bin/xcodebuild -exportArchive -archivePath ${XCS_ARCHIVE} -exportPath "${XCS_DERIVED_DATA_DIR}" -exportOptionsPlist ${XCS_SOURCE_DIR}/someconfdir/export.plist
/usr/bin/xcrun altool --upload-app --type ios --file "${XCS_DERIVED_DATA_DIR}/appname.ipa" --username "xxx@y.z" --password "xxx"
您需要一种方法让 Xcode 服务器可以访问 export.plist。一种选择是将其与源代码一起检入,因此上面的脚本使用 XCS_SOURCE_DIR 变量在某个配置文件夹中找到它。
它应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>teamID</key>
<string>xxx</string>
<key>method</key>
<string>app-store</string>
<key>uploadSymbols</key>
<true/>
<key>provisioningProfiles</key>
<dict>
<key>bundleid</key>
<string>profilename</string>
</dict>
</dict>
</plist>