Tag: DevOps

托管持续交付的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动作来实现此目的: $ […]

Xcode Server:iOS空中下载(OTA)安装技巧

原始文章:原始文章已发布在我的个人博客XCBlog上,继续阅读 此处 以获得更好的图形。 要阅读有关iOS DevOps和iOS CI / CD的更多有趣文章,请 在此处 访问我的博客 。 别害怕,没有fu * king广告! 自从Apple发布带有内置Xcode Server的Xcode 9以来,为iOS项目设置“持续集成”的过程就变得非常简单。 在我以前关于Xcode Server的帖子中,我解释了使用Xcode 9和Xcode Server为iOS应用设置CI的详细过程。 为了了解代码签名,您应该观看WWDC 2017会话,有关Xcode和Xcode Server的签名新增功能。 Xcode Server具有一个选项,可以作为bot配置的一部分来生产可安装的产品 ,这意味着Xcode Server创建了一个存档版本和IPA以进行集成,可以在网络中的iOS设备中下载该版本。 在本文中,我们将介绍从Xcode Server在iOS设备上安装内部版本时的常见错误以及针对这些错误的解决方案。 常见错误 由于Apple尚未完成使用Xcode 9编写Xcode Server的文档(在撰写本文时),因此,如果我们不关注其他设备,则在iOS设备上获取已安装的版本有时会比较棘手且耗时。在Stack Overflow或Apple Developers论坛上的经验。 有一些技巧可用于轻松获得iOS设备上的构建。 大多数iOS团队成员的常见错误如下。 使用IP地址访问无法下载内部版本的Xcode服务器 缺少访问控制 忘记启用Xcode服务器证书 使用域名访问Xcode服务器 Bot安装过程中错误的代码签名选项 Bot安装过程中错误的存档选项 这是iOS团队成员在使用Xcode Server进行OTA安装时犯下的五个常见错误。 现在,我们将看到一些针对这些常见问题的快速解决方案。 Xcode服务器提示 为了避免上述常见错误,我们可以遵循一些提示和技巧。 在使用多台Mac Mini服务器设置Xcode Server时,我已经面对了所有这些问题。 希望这对其他人也有用。 使用规范主机名 作为普通用户,使用IP地址访问网络中的任何计算机都是很常见的。 […]

将Fastlane集成到iOS项目:第5课

上一课,我们演示了如何构建应用程序并将ipa,dSYM上载到Crashlytics和Hockey App。 这次,我们将使用.env文件处理多个环境。 基本上,有两种方法可以配置环境值。 通过使用其他通道交付应用 车道:build_app_dev做 get_certificates( // … ) get_provisioning_profile( // … )build_app( // … )crashlytics( // … ) upload_symbols_to_crashlytics( // … 曲棍球 // … ) endlane:build_app_testing做 //复制build_app_dev内部的动作并更新值 结束 之后,您可以运行bundle exec fastlane ios build_app_dev和bundle exec fastlane ios build_app_testing通过不同的环境设置来构建应用程序。 此方法更为严格,仅创建另一个通道并在其他通道中指定值。 如果使用此方法,则有几个缺点。 降低Fastfile可读性,您很难阅读lane确切功能和流程 容易出错,因为您需要更新lane内的所有parameters或action 越来越长的代码…。 Fastlane确实理解了这个问题,它引入了.env文件来处理该问题。 创建您的项目环境文件 转到//fastlane 创建通用的env文件,名为.env 创建环境指定的文件,名为.env__ ,例如。 env.dev_adhoc和env.testing_adhoc .env –用于放置共享环境文件 .env.dev_adhoc –用于将开发环境值与Xcode […]

使用TeamCity进行Xcode项目持续集成的技巧

以下是TeamCity中Xcode项目的一些技巧。 (需要基本的Xcode项目和TeamCity知识) 确保Build Agent与macOS一起运行 在“ 版本控制设置”部分中附加源代码存储库 始终启用“ 版本控制设置 ”中“在build之前先删除checkout目录中的所有文件 ”选项,以避免输出产品出现意外结果。 Xcode项目运行器类型 我们可以在构建步骤中使用Xcode项目运行程序类型来轻松设置Xcode项目。 TeamCity 9.x和10.x支持Xcode Project Build Runner。 (构建配置>构建步骤>流道类型) 这可用于构建基于目标和基于模式的项目。 单元测试选项将与此流道类型一起提供。 这是一个复选框。 如果我们勾选框(构建操作>运行测试)。 单元测试和UI测试将与项目构建一起运行。 可以提供其他构建参数。 其他命令行参数:部分。 在这里,我们可以指定配置,sdk,enableCodeCoverage等。 如果我们有多个构建代理和具有不同版本(Xcode 9,Xcode 10等)的多个Xcode。 在构建设置下的“ Xcode路径:”部分中提供正确的路径是一个好主意。 其他构建步骤 我们可以在TeamCity中针对不同目的进行许多构建步骤。 几个有用的步骤是: 版本更新 使用Runner类型的“命令行”(mac终端)和命令“ PlistBuddy”,我们可以更新Xcode项目的plist版本(可以在以下网址找到一个不错的教程:https://marcosantadev.com/manage-plist-files-plistbuddy /) 将IPA上载到分发门户,例如testflight或hockeyapp(appcenter) 这通常是构建后的步骤,您可以在其中处理输出工件(IPA)。 您可以将其用作构建的最后步骤,也可以创建另一个依赖项配置,该配置仅在成功完成Xcode构建后才运行。 请记住,这里我们需要将artefact(IPA)传递给dependecy配置。