Tag: fastlane

使用Xcode 8的FastLane的新Build设置来理解

我已经构建并负责管理我们iOS移动研究工作的构建管道。 我们运行3个不同的版本: Alpha , Beta ,将每个版本发布到不同的输出: HockeyApp,TestFlight,AppStore 这些释放点中的每一个均由对不同git分支的提交触发。 提交开发内容将自动将构建版本发送给Microsoft HockeyApp ,提交给master的提交将自动构建应用程序的两个版本,一个版本自动发送给Apple TestFlight ,同时准备一个稍有不同的构建版本,我们可以手动将其部署到Apple App Store 。 为了使事情变得更加有趣,我们的一些项目使用了两个独立的应用程序目标,这使我们共有六种不同的配置。 当我将构建服务器和项目过渡到Swift 3和Xcode 8时,构建配置不再能很好地工作。 苹果对新版本的Xcode中的代码签名和配置方式进行了一些更改,因此我不得不更新流程。 构建通道的核心是快速通道,我们使用它来自动执行该过程的大多数步骤。 手动签名 我最初的希望是,可以将项目文件设置为“自动签名”,然后当它到达CI服务器时,服务器将重写项目文件中的所有必要字段,以将其转换为手动签名。 这是可能的,但是如果您在项目中同时拥有框架和应用程序目标,则将变得相当困难-在某些软件中就是这种情况。 因此,我们坚持使用手动签名进行所有操作。 借助“手动签名”,我们需要手动管理我们的配置文件-可能会有些麻烦-但至少我们有一个很小的团队,因此目前可以管理。 我的目标之一是确保快速通道过程是非破坏性的,这意味着您可以在开发机器上运行它,并且不会破坏您的项目。 因此,高级流程是存储现有的构建设置,然后根据需要重新连接项目文件,进行构建,然后将项目还原到以前的状态。 捆绑ID和其他唯一字段 我们的三个构建路径中的每一个都有一组唯一的字段。 例如,每个应用程序的捆绑ID必须是唯一的。 另外,每个捆绑包ID都有其自己的唯一供应配置文件供应-连接到与该内部版本关联的Apple开发者帐户。 因此,对于发行版,我们使用主要的开发人员帐户,而在beta和alpha测试中,我们使用企业帐户进行签名。 现在,配置文件存储在以下构建设置中: PROVISIONING_PROFILE_SPECIFIER,因此使用xcodebuild,grep和awk的组合提取此值 #使用XcodeBuild | Grep | Awk | 提取提取配置文件名称的信息 EXISTING_PROFILE = sh(“ xcodebuild -project#{PROJECT_FILE_PATH} -scheme#{SCHEME} -showBuildSettings | grep PROVISIONING_PROFILE_SPECIFIER | sed […]

如何使用Fastlane和Bitrise为多个iOS和tvOS应用设置CI

最近,我不得不为多个版本的iOS和tvOS应用程序设置一个持续集成(CI)管道。 由于没有找到有关如何以简单方式执行此操作的大量信息,因此决定撰写此博客文章。 用例 如果您有以下内容,则此帖子很有用: 白标应用程序(WLA),其中包含同一应用程序的多个变体; 针对多个平台的应用程序(iOS / tvOS / macOS); 而且,您不想在CI管道中重复或在管道中定义环境变量。 就我而言,我有一个通用应用程序(iOS和tvOS)两个版本(精简版和高级版),因此共有四个版本。 工具类 我使用Fastlane工具来自动化部署应用程序所需的任务。 像所有工具一样,它也有优点和缺点。 优点 : 您的管道不依赖于任何特定服务; 它可以在本地,服务或远程计算机中运行; 它取决于一个开源项目; 缺点 : 您需要时间进行配置; 您需要时间来维护它; 如果您不熟悉Fastlane,请参阅其文档。 快速通道配置 阅读fastlane的文档,使用环境变量似乎最适合我的用例。 为了为应用程序的每个版本加载不同的变量,您需要为每个版本定义一个文件。 在我的情况下,我用以下名称定义了4个文件: .env.ios .env.iosfree .env.tvos .env.tvosfree 每个文件都包含构建特定版本的应用程序所需的变量: 还需要设置Secrets以构建应用程序(FASTLANE_USER,FASTLANE_APPLE_ID,FASTLANE_PASSWORD),并验证在我的情况下选择的正确堆栈是macOS 10.13上的Xcode9.3.x。 如果您还想使用Bitrise,并且此帖子对您有所帮助,请使用我的推荐链接,以便我可以赢得Bitrise T恤😄。 结论 在此博文中,我们看到了如何使用Fastlane和Bitrise为不同平台,iOS和tvOS自动部署同一应用程序的多个版本。

使用Xcode Server进行iOS持续集成的利与弊

持续集成aka CI是iOS开发过程中不可或缺的一部分,当在应用程序开发过程中出现问题时,它可以提供早期反馈。 在敏捷应用程序开发中,生产可运行的应用程序不仅在编写良好的代码,而且还建立了可连续交付的基础架构。 持续集成和自动化构建的过程可以帮助实现持续交付。 市场上有各种持续集成工具可供iOS团队使用。 CI服务器解决方案可以是自托管的或云的。 您可以在此处获得有关CI服务器的完整列表以及建议。 在iOS开发中,选择自托管CI服务器时,我们几乎没有挑战性的选择 Xcode服务器 詹金斯 团队城市 如果您正在寻找云解决方案,那么有一些有希望的服务,例如 TravisCI CircleCI BuddyBuild 比特升 温室CI 有多种工具,因此挑战在于如何选择和评估为什么一个要比另一个更好。 Cloud CI服务器易于设置,可以由其他公司进行管理,并且只要配置正确,它们就可以正常工作。 另一件事是在使用云CI解决方案时,我们不需要有人来管理服务器。 但是,在使用基于云的解决方案时,您必须注意各种事项,例如隐私,成本,易用性,可用性和平台支持。 选择自托管vs Cloud CI有其自身的优缺点,您应该考虑最适合您的团队的问题。 对于自托管CI,Xcode Server似乎是简单的选择,因为它由Apple管理并与Xcode深度集成。 在本文中,让我们看看使用Xcode Server进行iOS持续集成的优缺点。 Xcode服务器简介 Xcode Server是Apple开发的一个持续集成平台,用于分析,构建和测试以及存档iOS和macOS应用程序。 iOS开发中最痛苦的部分之一是证书和配置文件配置文件。 当我们想在CI服务器上设置证书和配置文件时,变得更加忙碌。 最新版本的Xcode Server解决了证书和配置文件方面的许多问题。 Xcode Server与Xcode紧密结合,因此设置和使用Xcode Sever进行持续集成变得非常轻松。 苹果在CI的Xcode Server设置上有非常全面的文档,但是我写了简短的教程来设置最新的macOS Server来运行Xcode机器人,该教程也在DZone上发布。 您可以参考这些指南来开始使用Xcode Server。 Xcode Server具有以下功能 免费或廉价解决方案 自托管并与Xcode深度集成 设备测试 无线(OTA)安装 由苹果公司管理和维护 Xcode Server具有所有这些功能,但是有些人为使Xcode Server正常工作付出了很多努力。 让我们看看使用Xcode […]

Fastlane iOS,干净的模板。

目标? 大家好,我的文章的目的是让您清楚地了解多个项目中iOS快速通道的使用。 你不知道快车道吗? fatslane是一个移动自动化工具,可以帮助您轻松管理一些繁重的任务,正如其网站上所述: 构建和发布移动应用程序的最简单方法。 fastlane处理繁琐的任务,因此您不必 Fastlane是一款出色的工具,可在Android和iOS两种平台上使用,它也是用ruby编写的,并且具有现有的Swift版本。 Fastlane帮助交付和管理移动版本以及许多其他事情(例如管理测试人员列表,屏幕截图,代码签名等),还可以轻松与发行工具(TestFlight,Google Play,Crashlytics,HockeyApp …)的顶部进行交互。 有了这些给定的功能,它就成为了移动分发工具的顶端。 直截了当 在讨论fastlane之后,我们将以最小的努力展示如何实现对多个项目有效的干净fastlane集成的步骤。 我鼓励您看一些大型公司快速通道集成的示例,不要忘记官方文档。 这将帮助您充分满足项目需要。 好吧,我们应该现在开始,所以我们的快速通道目标是采取一些行动,让他们列出: 交付至App Store 交付给TestFlight 运送到织物 更新设备列表(针对每个配置文件) 安装依赖项(我知道这是不值得的) 别忘了采取一些内部操作,例如松弛通知和内部构建。 这里有什么新消息? 我们的主要目标是集中于所有项目在多个项目上的可重用性,每个项目的更改最少。 因此,我们的fastlane回购结构如下所示: 基本上,如果您熟悉fastlane,您会注意到Appfile和Fastfile始终存在。 因此,让我们定义上面显示的每个现有文件或存储库的需求 changelog.txt :包含每个已发布应用程序的更改日志或发行说明(用于beta测试),其本质上用于Fabric发行说明。 buildnotes.md :这是用于历史记录的痕迹,在每次Beta测试交付后,此文件将与新内容串联在一起,基本上是交付日期 , 应用程序名称, 应用程序版本和发行说明。 Invitation_emails.txt :每个crashlytics版本的邀请电子邮件列表,每行一封电子邮件。 devices.txt :要在现有配置文件中添加的设备列表,这是一个敏感文件,因此您必须尊重现有格式(多余的空间会造成问题)。 testflight_testers.csv :为TestFlight构建添加的测试人员列表,这也是Apple提供的尊重该文件的格式。 元数据和屏幕截图:这些存储库包含应用商店信息的所有必要数据,请在此处查看以更好地理解。 证书 :包括下载的证书和配置文件。 IPA:将具有生成的应用程序和dSYM文件。 .env👽 :这是一个环境变量,它包含所有项目配置,这将是每个快速通道集成的主要负责文件,当然还要与AppFile配合使用。 就这样,更改这两个文件,而无需处理任何编码文件。 嗯,.env里面有什么? 好吧,看看: 您可以看到大多数变量都带有注释,每个注释代表变量的内容,因此您的角色将为每个项目填充这些变量,您很高兴。 也别忘了Appfile 您想看看现有的车道吗? 这里是 在to_appstore […]

使用Fastlane自动将React Native App部署到应用商店

手动将React Native应用程序部署到商店可能会很痛苦。 这很耗时,容易出错,而且不适合初学者。 幸运的是,Fastlane可帮助您自动化该过程。 本文将说明在React Native应用的特定情况下如何使用Fastlane。 要快速开始使用Fastlane,请参阅本教程。 首先,我们需要设置一些内容。 设置您的React Native应用 向您的React Native应用添加图标 Apple要求您为应用程序添加图标,因此请确保在项目中添加了图标。 了解如何在单个命令行中生成React Native应用程序图标。 设置您的捆绑包标识符 确保在XCode的“ 常规”选项卡上更改包标识符。 不要让XCode管理您的React Native应用的签名 仅在XCode 8上的“ 常规”选项卡中,取消选择“自动管理签名”: 对于所有XCode版本,在“ 构建设置”选项卡中的“ 签名 ”下,将iOS开发人员设置为调试代码签名身份,并将iPhone发行版本设置为发行代码签名身份。 让魔术开始 创建Fastlane配置 为了在iOS上轻松进行设置,请将CD放入React Native应用的ios文件夹中: cd ios 并运行: fastlane init Fastlane将询问有关React Native应用程序的一些信息,并自动为您创建一个fastlane文件夹。 当要求确认值时,回答n 。 Fastlane尚未猜到您的React Native应用程序标识符,需要一些帮助。 然后,Fastlane将在Apple开发人员中心和iTunes Connect上自动创建您的React Native应用程序。 整洁,不是吗? 在iTunes Connect上创建它可能需要几分钟。 当要求一个scheme ,您必须输入React Native项目的名称。 例如,我使用react-native init AwesomeProject启动了我的React Native应用程序,因此我的方案名称为AwesomeProject […]

Buildkite和Fastlane-iOS开发人员改善睡眠的关键

在开始构建Tink应用程序的Swift版本之前,我们没有这些限制。 大多数开发人员在开始新项目时,都有他们想要实现的抱负和目标。 干净的代码。 没有警告。 良好的测试覆盖率。 主分支应始终建立。 我们实现这一目标的一种方法是建立一个持续集成和持续交付系统。 在开始对此进行讨论时,我们研究了可以使用的选项。 我们通常找到两个选项-托管和自托管解决方案。 借助托管服务(例如Circle,Bitrise),我们发现我们不得不移交对GitHub存储库的过多访问权限。 由于我们的应用程序可以处理数十万客户的财务数据,因此安全性至关重要,我们宁愿不这样做。 在阅读我们的工程博客时,您可能会注意到,我们在安全性方面非常重要。 这是我们和我们客户的财务风险。 我们选择使用自托管解决方案。 Tink的其他团队已经将Buildkite用于其CI / CD需求,因此,很显然,从长远来看,使用相同的系统对我们也将有所帮助。 建立,使用和修复可能发生的任何问题的知识已经在建筑物中了。 我们只需要点击它。 建筑风筝 我们在办公室中发现了一个旧的15英寸MacBook Pro,它的机身凹陷,视频卡出现故障以及古老的规格。它很快成为我们的第一台构建机器。当我们将笔记本电脑升级到新的USB-C MacBook Pro时,第二台旧的MacBook Pro成为了也可用-我们的第二个构建机器。 设置我们的构建机器非常容易,只需九步。 这些处理使我们的构建在机器上运行的设置过程。 我们还有其他设置机器的步骤,例如设置File Vault,在此不再赘述。 我们的服务器机房目前容纳我们的两台构建机器。 重要的是Trigger a build on all the lanes on the new build machine.突出显示“ Trigger a build on all the lanes on the new build machine. 这样,build文件夹是由Buildkite创建的,我们可以将带有秘密的keys文件复制到其中。

持续集成e Delivery com Jenkins + Fastlane

普遍存在的iOS,CI,Porémquaissãoos reaisbenefícios等极端问题,以及所有不动产的使用情况。 取消时间限制后,您将收到一份详细的表述,并注明时间。 议程 o持续集成e持续交付无关联性的重要内容。 安装快速通道 证明工作单位 建造辅助睾丸的工作 在AppStore上上传作业 Oéé持续集成(CI) Quantas否决了2个合并的违约情况,trabalhando em分支,separados的问题,a que que bra decódigo的问题,acho queééumum否环境的desenvolvimento com pois es desémésrés, ques nossocódigoestásemperestávele atualizado a mesmo tempo? 继续阅读完整内容的方法。 集成商(Ela Consemble em)提交了一份完整的声明,并在一份完整的声明中对您的担保书进行了说明。 示例,解散的A trabalha em uma特征,separada,解构的量化的B acaba de fazer o合并de sua特征Recémentrega。 Nosso sistema de持续集成,A证明书,A证明书和Mantida证明书的完整集成(Testes de UI por exemplo)。 Assim podemos identities erros deintegraçãoe pequenos bugs mais […]

对现有证书使用快速通道匹配,而无需吊销它们

Fastlane匹配极大地改善了代码签名,即使对于小型团队而言,其唯一的问题是默认情况下它不适用于现有证书,这对试图在现有项目上使用它的任何人来说都是一个停滞点。 但是,有一种欺骗快速通道匹配的方法来使用您现有的证书。 match是https://codesigning.guide概念的实现。 match创建所有必需的证书和配置文件,并将它们存储在单独的git存储库中。 每个有权访问该存储库的团队成员都可以使用这些凭据进行代码签名。 匹配还会自动修复损坏和过期的凭据。 这是在团队之间共享签名凭证的最简单方法 https://docs.fastlane.tools/actions/match/ 让我们开始吧,首先,您需要设置fastlane和fastlane匹配,为了不重复文档,只需按照那里的设置步骤进行操作: https://docs.fastlane.tools/getting-started/ios/setup/ https://docs.fastlane.tools/actions/match/#setup 重要提示:我建议您花些时间阅读整个文档,但在匹配指南上,请仅遵循设置步骤! 不要执行其余步骤,因为这会导致Fastlane为您的应用生成新的证书/配置文件。 现在您有了匹配设置,但是证书为零,并且由于它将证书存储在加密的存储库中,因此您不能简单地将现有证书添加到其中, 它将无法正常工作。 正确的方法是使用fastlane文档中的隐藏功能,该功能使您可以解密匹配存储库并对其进行更改。 在此之前,请确保已将证书和私钥导出到计算机上的某个位置。 为此,请打开“钥匙串”应用程序并转到“ Certificates类别。 选择您要使用的证书(该证书必须是您的应用程序正在使用的证书),然后通过打开上下文菜单并选择“导出:…”来导出该证书: 选择“证书(.cer)”作为“ 文件格式” ,然后保存在您记得的地方。 现在对“ 导入的私钥 ”执行相同的操作,这次选择“个人信息交换(.p12)”作为“文件格式”,然后保存。 不要在导出的密钥上放置密码,否则match将无法导入它。 下一步是验证该证书的ID,此信息不容易看到,因此我们需要使用Spaceship来抓取它,它是一个由fastlane直接创建的Ruby库。 由于您已经设置了快速通道,因此您已经可以访问它。 通过在终端上运行irb启动交互式红宝石外壳。 输入require ‘spaceship’并按回车键,这将在当前shell会话中导入库。 现在运行以下命令在Apple Portal上登录,如果正确设置了快速通道,它将检查您的凭据并登录。 飞船登录 现在有必要获取您帐户中可用证书的列表,有两种方法可以使用 太空飞船证书 基本上打印所有证书,或者使用限制性更强的调用 宇宙飞船证书发展 和 太空飞船证书生产 取决于您要使用的证书类型。 该列表将包含每个证书的所有属性,您需要查找刚刚保存的证书的详细信息,查找名称和创建/到期日期。 找到要查找的密钥后,请重命名先前保存的密钥和证书,以将该ID作为名称。 注意: Fastlane更改了下一步需要使用的一些方法,因此,在必要时,我将明确地将命令分为两部分,一个用于Fastlane版本≤2.105.2,另一个用于较新版本。 有关更改的更多详细信息,请参见https://github.com/fastlane/fastlane/issues/13521。 打开加密的存储库 在交互式外壳上运行以下命令,以设置一些稍后将使用的变量: 版本≤2.105.2 irb(main):001:0>需要“匹配” irb(main):002:0> git_url =’git@github.com:path-to / […]

解决React Native,macOS Sierra,Xcode 8和Fastlane升级问题

苹果启动了她的最新操作系统。 Xcode已更新为8.0版,第二天所有开发人员都在其开发计算机上修复其工具问题。 听起来很家庭吧? 这篇小型博客文章描述了解决此问题的方法,因为您可能陷入了React Native应用程序的困境,并在整个互联网上搜索如何解决它:)。 修复React Native的_refreshControl编译错误 首先是将_refreshControl的引用固定为RCTScrollView.m (位于node_modules中的文件)中的refreshControl : Xcode 8中的基本SDK 9.3 通过从Apple Developers下载页面下载Xcode 7(需要使用Apple ID登录),可以放回9.3版本的iOS SDK(随Xcode 7一起提供)。 现在,将Xcode应用程序解压缩到某个位置,但不要覆盖现有的Xcode(/ Applications / Xcode)安装! 将正确的平台SDK(右键单击,显示软件包的内容)复制到磁盘上的安全位置,例如:/ Users / /Developer/sdks/9.3/iPhoneOS.platform 。 最后,在当前Xcode应用程序中对此目录进行符号链接: sudo ln -s /用户/ /Developer/sdks/9.3/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9 3.sdk 选择9.3作为基本SDK 打开(如果已经打开Xcode,则需要重新启动)Xcode,转到项目的Build Settings,然后选择9.3。 使用Fastlane修复Xcode 8签名 最后,我们想修复我们的构建过程,使用Fastlane进行设置。 随着Xcode 8的发布,签名已更改,您必须手动设置“配置文件”(请勿打开“ 自动管理唱歌 ”)。 例如,您具有以下体育馆配置: 运行车道时,您可能会看到退出状态:65错误。 这是由Xcode 8设置中的无效签名引起的。 还要确保在项目文件中将所有PROVISIONING_PROFILE变量重命名为PROVISIONING_PROFILE_SPECIFIER 。 现在,在构建目标的“ 常规 ”选项卡中选择正确的“配置文件”: […]

使用Fastlane的iOS连续部署🚀

如果您想在iOS应用程序中添加持续部署(CD),并且很难做到,那么您来对地方了。 我们缺少一篇文章,描述了使用Fastlane安全地执行CD的完整过程,以及一个使用连续集成(CI)服务(在本例中为Travis CI)的工作示例。 考虑到这一点,本指南将为您提供整个过程的分步指南。 现在,我们已经在公司部署了多个应用程序,我们发现手动将应用程序交付到App Store的过程是一个非常重复,令人沮丧且耗时的过程。 使用Fastlane,我们从几个小时的测试和部署缩短到了几分钟。 这是两部分系列的第二篇文章,其中包括: 自动化测试(引入Fastlane) 持续部署到TestFlight和App Store Notes是一个iOS应用程序,允许用户添加,删除和更改注释。 该项目用于说明如何使用Fastlane和Travis CI进行连续部署。 整个项目可在GitHub上找到,供您随意咨询和使用。 创建一个没有2FA的新Apple ID。 避免使用您自己的帐户,该帐户对您来说更安全,并且更容易将项目交付给客户或其他人。 Fastlane支持2FA,但是在管理会话令牌时会遇到问题( 不过应该进行测试! ); 将帐户添加到Apple Developer和iTunesConnect中的项目开发团队。 这对于自动创建必要的证书和配置文件,以及将应用程序上载到TestFlight或App Store是必不可少的; 空的 GitHub 私有存储库,用于存储项目中使用的加密证书和配置文件。 不要使用此存储库或将其更改为其他任何内容,脚本将自行管理存储库文件。 您将有多个可用命令,所有命令都在一个文件下,这将使您能够: 测试您的应用程序,最后进行漂亮的打印; 从计算机上手动部署应用程序,并通过从TestFlight获取当前版本来增加构建版本; 通过CI服务自动部署您的应用程序。 我们需要设置Xcode项目,以便与Fastlane和Travis CI脚本和谐地交互。 在撰写本文时,并且在尝试将Xcode与选择的自动管理签名一起使用之后,我们得出结论,正确实施持续部署的唯一可行方法是进行手动证书管理。 这些步骤是: 创建证书; 配置对新证书的Xcode签名; (可选)注册更多设备。 您将需要需求 🎒部分中提到的Apple帐户和GitHub存储库。 只需使用init命令并按照显示的步骤操作(系统将提示您存储库URL)。 快速通道匹配初始化 脚本结束时,您将在fastlane文件夹中创建一个Matchfile。 打开它,并将app_identifier和username更改为您的应用程序捆绑包标识符和所创建帐户的Apple ID。 现在,我们需要运行命令以将证书创建为所需的配置文件类型。 由于我们将要正确配置Xcode项目,因此我们将创建development和应用appstore类型。 运行开发脚本,将提示输入密码来加密和解密证书,并保存它,因为稍后我们将需要它。 快速通道比赛开发 继续执行appstore脚本: Fastlane Match应用程式商店 将创建所需的每个证书,请记住,如果需要添加更多检查步骤,它将为开发者帐户证书管理器中列出的所有设备创建证书。 […]