托管持续交付的iOS应用程序的ipa和dSYM文件
通过持续交付,可以在产品所有者准备就绪并获得批准后立即频繁发布新功能。 连续交付管道应该能够分析,构建,测试,存档并将iOS应用程序部署到iTunes Connect。 在上一篇文章中,我们已经看到了如何使用Fastlane工具设置基本管道。 作为存档步骤的一部分,部署到iTunes Connect的每个iOS版本都会创建一个.ipa文件,而dSYM文件是一个“调试符号文件 ”。 这些是在构建过程中生成的非常重要的构建工件,可用于返回到iOS应用的早期版本。 将这些IPA文件托管在某个位置非常有用,这样我们就可以轻松访问iOS应用的早期版本。 在本文中,我们将看到将IPA文件托管到GitHub或类似托管服务器的自动化方法。
您可能想知道为什么我们需要在服务器上托管已发布应用程序的IPA文件。 在某些情况下,方便使用IPA文件
- 如果需要,轻松安装以前版本的iOS应用
- 由于源代码的构建可能会因Swift版本或其他依赖项的更改而失败,并且在过去发布应用程序时开发人员可能没有相同的环境。
- IPA文件是通用二进制文件,因此可以部署到iPhone和iPad。
对于Xcode Server,Jenkins,TeamCity等自托管CI服务器,Continuous Integration服务器是托管IPA文件的最佳位置,但是对于TravisCI和CircleCI等云托管CI服务器,我们需要在其他地方托管IPA文件。 这是因为基于云的CI服务器会为每个构建启动新的VM,并且在构建完成后会销毁VM。 除非将其上传到其他服务,否则我们可能会丢失IPA和其他构建构件。 有几种选择,我们可以托管我们的构建工件,例如测试报告,IPA文件dSYMS等。
- 用于自托管解决方案的Continuous Integration Server
- AWS S3存储桶或类似第三方服务(例如Artifactory)
- 的GitHub
- 公司内部服务器
有自托管CI服务器(如Apple的Xcode Server),其他开源CI服务器(如Jenkins,TeamCity等)。自托管CI服务器的好处是我们无需找到其他任何地方来托管构建工件。 除非我们删除它,否则它在CI服务器上已经可用。 有时,在这种情况下,我们需要清理CI服务器,我们需要将发布版本的构建工件移到同一服务器上的任何其他位置。 在这两种情况下,我们都可以访问IPA文件和dSYMS。
带有Xcode 9的最新版本的Xcode Server具有一项新功能,它将创建和IPA文件,这些文件可以从Xcode Bot中看到。 我在之前的博客文章“ Xcode Server + Xcode 9 =全面的iOS CI”中分享了Xcode Server的新功能。
使用Xcode Server,可以轻松地访问发布漫游器的IPA文件。 同样,我们可以将它们放在Jenkins或其他CI服务器上。
如前所述,从基于可能的CI服务器访问构建工件将具有挑战性,因为已经为每个构建启动了新VM,并在构建结束时将其销毁。 我们必须使用脚本将生成的构建工件上载到其他一些服务,例如AWS或类似服务。 我们可以使用Fastlane set_github_release操作轻松地将资源上传到GitHub。
我们可以结合一些Fastlane动作来实现此目的:
$ tag =“#{app_version}-#{testflight_build_number}” ) add_git_tag( 标签:“#{$ tag}” )push_to_git_remote( 远程:“来源”, local_branch:“大师”, remote_branch:“管理员”, 标签:真 )github_release = set_github_release( repository_name:“ your_git / repo”, api_token:ENV [“ GITHUB_TOKEN”], 名称:“上传资产”, tag_name:“#{$ tag}”, 承诺:“主人”, upload_assets:[“ ./build/myapp.ipa”,“ ./build/myapp.dSYMS”] )
上面的代码片段将标记推送到GitHub,并通过将IPA和dSYMS上传到Github来创建发行版。
使用GitHub的优缺点
使用GitHub在GitHub上托管IPA和dSYMS有一些利弊。
优点是
- 轻松设置并访问所有开发人员。
- 它不需要任何其他第三方服务,例如AWS S3存储桶或类似服务
- GitHub已经与大多数基于云的CI服务器(例如TravisCI和CircleCI等)在网络中,因此无需添加与网络相关的依赖项。
- 我们不必担心令牌,AWS等第三方服务的凭证的安全性。
缺点是
- IPA和dSYMS的体积很大,因此它们可能会占用大量可在GitHub服务器上使用的内存
- 难以与没有Github帐户的非技术人员分享。
现在,我们设法将IPA文件上传到服务器,但是如何使用这些文件返回到iOS应用的旧版本。 有多种方法可以实现此目的,但最简单的方法是使用Xcode。 过程非常简单在插入了iPhone的Xcode 8中,打开Window-> Devices。 在左侧导航中,选择插入的iPhone。单击已安装应用程序下的+符号。 导航到要安装的.ipa。 选择并单击打开以安装该应用程序。
尽管使用Xcode是在真实iOS设备上安装IPA的最简单方法,但是我们需要拥有用于对应用程序进行签名的证书和配置文件。 如果没有证书或配置文件,Xcode无法在设备上安装该应用程序。 还有一点需要注意的是,如果分发证书已过期,那么我们将不再能够使用Xcode安装该应用程序,除非我们使用有效的证书和配置文件将应用程序签名。
在快速交付的世界中,我们经常部署一个iOS应用程序,因此跟踪IPA文件和dSYMS等重要资产以在需要时轻松返回到该应用程序的先前版本非常重要。 您可能想看看您的应用程序在一段时间内是如何发展的,或者可能不是,但是保持构建构件挂起一段时间是个好主意。 我们可以使用Fastlane或自托管CI服务器来实现这一目标。
像XCBlog的 XCTEQ 发布的帖子一样 ? 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 在 Github 上 搜索我们的 服务 ,开源项目, 或者在 Twitter , Facebook , Youtube 和 LinkedIn 上关注我们 。 下载我们的 XCBlog iOS应用程序以离线阅读博客。
X CTEQ 是一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 为 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..