Xcode服务器:密钥目标错误,需要上载,找到导出

Xcode服务器:密钥目标错误,需要上载,找到导出,xcode,export,archive,xcode-server,xcode-bots,Xcode,Export,Archive,Xcode Server,Xcode Bots,我正在使用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=

我正在使用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>
我试着移除触发器,看看这是否引起了问题,但不是。现在我的机器人只是试图存档和导出项目,我得到了这个关于目标应该上传的错误。。。这是不受支持的

手动归档应用程序并从“分发应用程序”上传效果良好


任何帮助都将不胜感激。我希望在不添加更多工具的情况下实现这一点,因为它本身应该是可能的。

正如评论中所讨论的,这可能是Xcode服务器中的一个bug

由于Xcode项目已经创建了一个归档文件,因此一个可行的选择是在bot中禁用导出,并使用集成后脚本触发器导出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"
<?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服务器能够访问export.plist的方法。一个选项是将其与源代码一起检入,这样上面的脚本就可以使用XCS\u source\u DIR变量在某个配置文件夹中找到它

应该是这样的:

#!/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"
<?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>

teamID
xxx
方法
应用商店
上传符号
供应文件
布列德
档案名称

我目前正在与同样的问题作斗争。。。我认为某个缓存需要清除。在设置自定义ExportOptions.plist之前,导出工作正常,之后,即使删除了ExportOptions.plist,也似乎无法继续工作。我和你犯了同样的错误。我不知道这个目标密钥“导出”一直从哪里来:/@kristovannandschoot目标导出来自xcode服务器/bot。在“配置”下,您可以勾选/取消勾选“存档”,旁边有各种导出选项可供选择。选择其中一个将添加关键点。问题是,我的理解是,目的地出口应该是什么。不支持上载,因此必须将其导出。我现在假设它是xcode/xcode服务器中的一个bug,我同意你的假设。我完全禁用了它,并基于Xcode生成的${XCS_ARCHIVE}在post触发器中进行了导出。最后,我还是在我的Xcode项目中设置了我的签名,所以这样做可能更有意义。@KristofVanLandschoot你能用你的post触发器在下面添加一个答案吗?我也尝试过这样做,但不断收到一个错误,说指定-exportArchive时需要-exportOptionsPlist
我正在添加该标志,但它仍然不适用于甲烷储存,我想我在尝试它时,我的ExportOptions.plist中一定有一个错误。现在,这是一个解决方案。我不得不禁用自动签名并添加我不需要的
SigningStyle,可能是因为归档文件已经手动签名,手动签名是默认的。