我在使用CI服务器构建应用程序时遇到问题(如果相关,我们会使用Jenkins)。
我们之前已经将Jenkins构建设置为与Fastlane / Sigh / Gym一起使用,但是由于我们最近在应用程序中添加了iMessage扩展,因此构建过程中断了。
我读过的所有内容都指出我应该使用Match获取签名证书,而不是叹息,所以我已经转而使用它了。
我也无法让Sigh工作,因为它生成的证书似乎忽略了这两个证书都需要应用程序组功能的事实(两者都使用相应的“group.com.mycomp.myapp”应用程序组)
在我的本地开发机器上切换到Match之后,我现在创建应用程序的成功有限。我现在在Match命令中使用一组app标识符。
这确实可以将证书成功下载到本地计算机。 (我还最终成功地在CI服务器上进行了这一步骤,经过多次尝试以及使用无效证书等的后退和转发)
接下来,在我的本地计算机上运行Gym成功,但在CI服务器上失败并显示以下消息:
SDK'iOS 10.1'
中的产品类型“App Extension”需要进行代码签名
查看完整日志文件的最后,我可以看到消息
检查依赖关系
没有'com.mycomp.appname.iMessage'的个人资料 发现:Xcode找不到配置文件匹配 'com.mycomp.appname.iMessage'。
产品需要代码签名 在SDK'iOS 10.1'中输入“App Extension”
我们的Fastfile中的这个通道如下所示:
lane :production_build do
# grab the appropriate full paths
project_path = File.expand_path("./", __FILE__)
xcodeproj_path = File.join(project_path, 'AppName.xcodeproj')
xcodeworkspace_path = File.join(project_path, 'AppName.xcworkspace')
# update the correct entitlements file for production
srcEntitlements = File.join(project_path, 'AppName-Prod.entitlements')
destEntitlements = File.join(project_path, 'AppName.entitlements')
print "copying Entitlements file\n from: #{srcEntitlements}\n to : #{destEntitlements}\n"
FileUtils.cp(srcEntitlements, destEntitlements)
# switch the xcproject details to the appropriate team
# (we use different teams for Dev and Prod)
update_project_team(
path: xcodeproj_path,
teamid: "XYZZY"
)
# we have a couple of other steps here to ensure the project configuration
# uses the correct AppIds but I've excluded them for brevity
# download the appropriate certs
match(type: "appstore",
app_identifier: ["com.mycomp.appname", "com.mycomp.appname.iMessage"],
team_name: "Team Name",
team_id: "XYZZY"
)
# These old Sigh commands appear to ignore the App Groups requirements
# sigh(force: true, adhoc: true, app_identifier:"com.mycomp.appname")
# sigh(force: true, adhoc: true, app_identifier:"com.mycomp.appname.iMessage")
gym(scheme: "AppName Production", workspace: xcodeworkspace_path)
end
我在两台机器上运行相同的组件和最新版本:
我猜这是在我的本地开发计算机上正常工作,因为我总是在XCode中加载项目,我假设修复了cert映射,而在CI服务器上我不这样做。
如何正确映射证书以便在CI服务器上运行?
或者,如何进行此设置以使Sigh生成具有正确App Group要求的证书?