Tag: fastlane

使用Jenkins,Fastlane和TestFlight在iOS中进行持续集成和持续交付-第2部分

本文概述了从开发人员提交开始的CICD旅程的总体步骤。 从多种口味中,CICD管道可以将重点放在Beta构建自动化上。 这些步骤分为三步。 他们是: A)开发B)集成与部署c)测试 A)发展 开发人员完成故事或错误修正。 开发人员使用应用程序用户界面和单元测试用例套件测试故事/错误修正。 验证后,开发人员将本地更改推送到相应的远程分支。 开发人员从功能或错误修正分支创建一个“拉取请求”,再到“开发”分支。 审阅者审阅并批准请求请求。 开发人员将更改合并到“ develop”分支。 B)整合与部署 Jenkins在’develop’分支上的新提交时得到通知(Webhooks或轮询)。 Jenkins在本地提取最新的代码库并开始构建过程。 如果构建成功,则转到下一步。 如果构建失败,请通知团队(电子邮件,Slack等)。 3. Jenkins使用Fastlane运行单元测试用例套件。 如果构建成功,则转到下一步。 如果构建失败,请通知团队(电子邮件,Slack等)。 4. Jenkins增加IPA的内部版本号,并使用Fastlane将其上载到TestFlight。 C)测试 TestFlight将通知发送给所有内部测试人员。 内部测试人员使用TestFlight应用程序在其设备中安装最新的Beta版本。 内部测试人员结束了故事。

Xcode机器人fast y fastlane🚀Parte 1

安提斯·纳达·埃斯泰斯特没有任何通俗的口译服务,拉美地区的拉美地区和拉美地区的独奏者,独奏者和独立军团。 解决因错误而导致的错误。 总体配置和维护的基本知识请一位熟练的工程师提交一份精通的,精湛的手册。

DevOps的旅程-第1部分

我最近荣幸地加入了Pillar ,这是他们DevOps团队的一个令人兴奋的新项目。 作为一个相对初级的开发人员,这始终是发现的旅程,而且就是黑桃白! ♠️ 我们的任务是接受一个React-native项目,并创建一个可以利用自动化测试框架的持续集成/持续交付(CI / CD)管道。 此博客涉及过程的CD部分。 另一个博客将详细介绍管道的“测试自动化”部分。 所以我们的任务听起来很容易,呵呵。 但是为什么听到我问的为什么要建立CD / CI管道呢? 这将增加什么好处? 首先,如果您不确定这些术语的含义和区别,请查看这篇非常有用的文章(https://www.atlassian.com/continuous-delivery/ci-vs-ci-vs-cd)。 CI / CD管道有何用处? 简而言之,它使开发人员的生活更加轻松。 它节省了开发人员的时间 ,为他们提供了快速的反馈,并简化了整个部署过程,包括构建应用程序, 测试应用程序,将应用程序归档在二进制存储库中以及将两者都部署到必要的测试平台。 所有这些都可以通过自动CI / CD管道来处理,从而节省了开发人员的时间。 这使开发人员感到高兴,并使他们腾出精力去做自己最擅长的事情,从而开发和创造了魔术。 ✨ 因此,自动化的管道可以节省时间。 真好! 但是,那并不是它的亮点。 它的亮点在于它可以设置可靠,重复地发布代码的过程 ☀️作为开发人员的智能和能力,他们是人类。 这意味着他们会感到疲倦并可能犯错,而自动化的流程可以帮助减轻这种情况。 这是描述CI / CD的引号。 确实是一个简单的报价,但要点。 创建可重复,可靠的过程来发布软件 因此,这些是我们需要通过React Native项目实现的总体目标: 依赖管理 建立业务流程并发布 结合以上内容并使用CircleCI自动化我们的管道 我们从一个具有许多依赖关系的React Native项目开始。 以下是针对我们项目的主要问题的简要列表: 我们的应用程序需要许多独特的依赖项,例如Signal Server 我们有自己的存储库,需要包含在Artifactory中存档的存储库 iOS特定的依存关系:cocoapods 依赖性管理问题#1:管理许多npm依赖性 要解决此问题,我们使用了CircleCI和Artifactory 。 CircleCI用于预订我们的应用程序的构建。 我们使用它来开始我们的应用程序构建,正如我们稍后将要看到的,我们也使用它来关闭我们的应用程序构建。 […]

更好的iOS项目:如何使用rbenv管理iOS项目的ruby环境

在“更好的iOS项目”系列中,我们介绍了各种工具和环境,这些工具和环境对于更方便,高效地处理iOS项目很有用。 特别提示 对于随后的任何安装,您都不必通过sudo使用root用户权限。 如果您似乎需要,则很可能您之前已经有权限问题,或者您没有正确安装和设置rbenv 。 如何使用rbenv管理iOS项目的ruby环境 我们为什么要这样做? ruby已用于编程和运行各种iOS开发工具,例如fastlane , cocoapods或xcodeproj 。 macOS预先默认安装了较旧版本的ruby 。 由于系统本身使用ruby ,因此最佳实践是不要弄乱系统ruby,而要使用用户安装(以及最新)的ruby语言版本。 使用ruby版本管理器,您可以同时维护多个不同ruby版本的安装,并根据项目(自动通过.ruby-version文件)确定要使用哪个ruby版本。 本文末尾提供了本文中使用的工具和文件名的词汇表。 我应该使用哪个红宝石环境管理器? 我们在使用rbenv方面有一个流畅的经验,但是使用rvm或chruby应该可以得到类似的结果。 安装和设置rbenv 安装酿造 可以使用brew package manager轻松安装rbenv ,因此请确保已安装并运行它。 使用brew安装rbenv和ruby-build 通过运行安装rbenv (用于管理ruby环境) brew install rbenv 这还将安装ruby-build工具(用于通过rbenv安装ruby的版本)。 如果要升级,请运行 brew upgrade rbenv ruby-build 为您的外壳设置rbenv 安装完上述工具后,您需要在外壳程序的配置脚本中添加一个设置rbenv的调用。 您可以通过调用来找出正在使用的shell echo $0 根据结果​​,您需要更改〜/ .bash_profile (对于bash), 〜/ .zshrc (对于zsh)或外壳程序的相应文件(如果您有其他外壳程序)。 如果文件(例如〜/ .bash_profile )以前不存在,则只需创建它即可。 由于我们使用非常好的Oh-My-ZSH作为外壳,因此可以通过在图形文本编辑器中打开〜/ .zshrc来对其进行编辑,也可以通过在外壳中直接调用来对其进行编辑 nano ~/.zshrc […]

使用Jenkins,Fastlane和TestFlight在iOS中进行持续集成和持续交付—第1部分

每个开发环境都有自己独特的方式。 它是分支策略,源代码控制系统,代码审查过程,合并和发布策略。 本文的目的是显示实现CICD管道所需的基本步骤,作为快速参考指南。 这更像是要点。 您还可以参考下面提供的链接,以详细了解这些步骤。 使用的工具是Xcode,GIT,Jenkins,Fastlane和TestFlight。 安装Xcode及其命令行工具。 从https://brew.sh/安装HomeBrew软件包管理器 / usr / bin / ruby​​ -e“ $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 3.用ruby稳定安装RVM: \ curl -sSL https://get.rvm.io | bash -s稳定—红宝石 4.安装Java8,因为Jenkins使用Brew在Java8上运行。 酿造自来水桶/版本 brew cask安装java8 如有任何问题,您可以直接从Oracle网站下载并安装Java8。 5.使用Brew安装Jenkins。 酿造安装詹金斯 6.启动詹金斯 酿造服务开始詹金斯 7.在浏览器(http:// localhost:8080)中打开Jenkins,登录,创建一个用户。 如果看到“解锁詹金斯”屏幕,请按照提供的说明进行操作。 8.配置Jenkins后,从“管理Jenkins”->“管理插件”安装“ Xcode集成”。 9.完成后,通过单击“创建新作业”来创建新作业。 如果您已经在另一台机器上准备好了作业,则只需复制“ jobs”文件夹,然后将其粘贴到/user/.jenkins下的目标机器中即可。 在我们进行更多工作时,最好查看系统中所有隐藏的文件。 这是执行此操作的参考。 10.创建作业后,将其配置为与源代码控制存储库连接。 11.安装Fastlane 酿造桶安装fastlane 12.如果您还没有“ bash_profile”,请创建一个新的。 您可以参考此操作。 13.在代码库中初始化Fastlane。 编写动作。 将更改提交到存储库。 这是示例的Github参考。 […]

在RedMart发售iOS

每个人都喜欢运输软件! 有什么比在AppStore上发布代码更好呢? 在本博文中,我们将简要介绍如何改进iOS应用的构建和发布过程。 工具和基础设施: TL; DR: TravisCI + Fastlane 过去,我们的iOS应用发布过程涉及通过Xcode / Application-loader上传软件包。 我们以前有shell脚本来自动执行此操作,但是由于一段时间未使用/维护,因此它们不适用于最新版本的Xcode。 因此,我们可以选择理解和修复这些脚本,但是我们意识到,最好投资以下内容: 1)易于理解和使用。 2)易于构建。 3)从长远来看,每当Xcode和iTC进行更改时,维护都很容易。 Fastlane是我们要考虑的问题,因为它似乎可以选中复选框,而我们的开发人员也可以根据以前的经验对它说好话。 通过在Fastlane中使用Match获得的另一个好处是,我们不再需要为每个开发人员管理多个证书和配置文件,因为单个副本已加密并存储在其自己的存储库中,从而易于维护开发人员端口且没有依赖性在开发人员/计算机上进行发布。 至于硬件,Travis与GitHub集成良好,我们将其用于RedMart的其他项目,因此我们决定使用它。 处理: TL; DR:发布计划。 一点点纪律会让每个人都开心。 有时候我们一周内要发布多个版本,如果我们计划好发布并更好地管理期望,回想起来可以避免。 因此,我们引入了发布时间表。 这使我们的发布周期可预测,从而使我们的质量检查人员可以相应地计划其日历,还可以使其他利益相关者对何时可以启用某个特定功能有清晰的了解。 因此,我们的发布时间表如下所示: 1)我们在每个星期五将RC进行质量检查,并将其狗食化 。 2)团队在周末使用此RC进行购物。 这有助于我们及早获得反馈/关注。 3)我们的质量检查人员会在星期二早上批准我们,并进行自动回归测试并根据更改日志进行手动检查。 4)如果一切顺利,我们将发布所有更改。 否则,我们将还原错误的提交并继续进行发布。 由于iOS App版本在批准/上线时间(通常为12小时)和构建版本在用户设备上的分散性方面相对昂贵,因此,我们尝试为母版上的代码留出足够的时间以供质量检查和测试使用内部测试小组上线之前。 总而言之,这种设置节省了我们无数小时的时间和精力。 现在,我们只需要触发构建并接一位同事玩桌上足球🙂 摘要: 最初发布在geeks.redmart.com

使用Fastlane,Match和Gym交付iOS应用(第1部分)

使用此命令后,Fastfile将被添加到项目的目录中。 如果您在Atom / Visual Code上打开Fastfile,则会看到Fastfile模板: 如果我们稍微拆掉模板代码,那么desc就是我们向团队中其他开发人员甚至我们自己解释Lane的目的的部分,当我们使用“ bundle exec fastlane lane_name”时, lane将是fastlane选项。 我已将泳道的名称更改为beta,并编写了一些代码以将我的应用发送到beta发行版。 // 1 椰子纲 // 2 crement_build_number // 3 匹配(app_identifier:“ com.mertserin.fastlanetest”,类型:“ appstore”,只读:true) // 4 健身房(方案:“ FastlaneTest”,工作区:“ FastlaneTest.xcworkspace”,export_method:“ app-store”,配置:“ Release”,清洁:true,output_directory:“ build”) // 5 testflight(ipa:“ build / FastlaneTest.ipa”,skip_waiting_for_build_processing:是) // 6 clean_build_artifacts 让我们一一阅读我们的代码: 1-)Fastlane将确保我们的豆荚已更新 2-)由于要将新版本发送到iTunes Connect时需要更改内部版本号或版本号,fastlane会为我们完成此操作。 3-)我们将在稍后的帖子中进行匹配,但有关简短信息,匹配将帮助我们在Apple开发人员门户上保持证书和配置文件的同步 4-)我们还将说明健身房,但对于其他简要信息,健身房将帮助我们发送具有不同方案和配置的ipa。 5-)创建ipa后,我们需要通过TestFlight分发我们的应用。 6-)它将清除比赛和体育馆创建的所有垃圾。 这段代码中有两部分我们还没有讨论过。 比赛和体育馆 什么是比赛? 第一次为团队效力时,我遇到了比赛。 由于我已经长期工作,所以我从没考虑过证书和配置文件。 Xcode将为我创建它,这很不错。 但是,当我成为拥有其他2个iOS开发人员的团队的一员时,我意识到保持开发人员门户的清洁和同步确实非常困难。 […]

揭秘iOS签名

欢迎来到救援区。 如果您走到了这一步,那可能是因为您发现自己为苹果的iOS签名过程及其周围的混乱而咒骂苹果。 保持镇定,我们都去过那里并幸存下来。 这不是另一本使用方法文章。 这些周围很多。 在这里,我将尝试绘制更高级别的有关iOS签名工作方式的图片。 当事情进展得不太顺利并且您需要排除错误时,获取流程的心理模型非常有用。 本文是在2019年3月撰写和发布的。当前版本是XCode 10.2。 这一点很重要,因为Apple会不断更改其签名方法和功能,因此在某些时候,本文也会过时。 为什么要签名 (这有什么好处?如果您已经确信签名很重要,请跳过此步骤)。 需要对应用程序进行签名有两个原因: 为了允许Apple在每个应用可供用户使用之前对其进行授权,并对该应用进行签名,可以确保该应用不会被恶意人员修改,并且您的应用中没有恶意代码。 为了使Apple通过限制只能在Mac上运行的版本以及向其开发者的帐户许可证收费来赚钱。 苹果公司的“封闭花园”理念驱使他们不仅限制从App Store下载的应用程序,还限制设备上安装的所有内容。 因此,如果您现在是为猫构建漂亮的闪亮Tinder的开发人员,则除非获得Apple的明确签名许可,否则您将无法在设备上安装它。 这就是整个应用程序签名神秘过程的起点。 签署实体 (iOS签名地狱的参与者) Apple需要了解三件事,以允许您在任何设备上安装任何应用程序:谁? 什么? 哪里? 谁—证书将标识所有者 什么—开发和安装应用程序 位置-将在哪些设备上安装应用程序。 让我们从简单的一个开始: 设备标识符 唯一设备标识符( UDID )是分配给Apple设备的40个字符的字符串。 在Mac中,可以通过访问硬件信息找到它。 在iPhone / iPad上,该站点可以帮助找到它:http://whatsmyudid.com/ 接下来是确定的应用程序。 这是您可以弥补的: 应用程序标识符(应用程序ID /捆绑ID) 这是标识您的应用程序的密钥。 通常将应用程序ID作为域的相反顺序,例如com.company.app。 应用程序ID由团队拥有,因此需要在团队开发人员门户上进行注册。 需要在团队的开发人员门户上注册应用程序ID。 每个应用程序还指定要使用的Apple服务。 此类服务可以是推送通知(通过APS→Apple Push Services。只有Apple可以将通知推送到设备),iCloud,Siri等。 [准确地说,com.company.app称为捆绑包ID。 应用ID是团队标识和捆绑ID的组合,例如ABCD1234.com.company.app] 最复杂的是证书。 证书 证书的目的是验证一个人或一个团队是否是该应用程序的真正所有者,并且其身份不能被他人盗用。 一个人可以通过其Apple ID来识别,也可以属于一个团队。 […]

运行iOS版本-第3部分,React Native DevOps指南

TLDR: 为三种构建类型配置一个React Native iOS项目:开发,登台和发布。 自定义构建行为以实现Xcode的可重复性,然后使用Fastlane简化流程。 使用Jenkins自动化Fastlane构建流程。 简介| 设置| 预建| iOS | Android | 詹金斯| CodePush | 测试中 概要 概念— Xcode 构建类型和目的地 按键和配置文件 管理Xcode 构型 方案 构建设置 建立阶段 新建系统 概念— Fastlane 车道 选件 元数据/ App Store 詹金斯 演练 创建登台配置 创建开发,暂存和发布方案 编辑构建选项和阶段 查看签名配置 添加Fastlane车道,选项 添加iOS Fastlane元数据 创建詹金斯职位 测试工作 系统总览 概念— Xcode 构建类型和目的地 苹果肯定喜欢使应用程序开发复杂化。 如本系列的第1部分所述,iOS的命名构建类型比Android多得多。 复杂性的主要驱动因素是供应配置文件。 每个配置文件都会限制可以运行您的应用的合格设备的数量。 发布版本只能在设备上运行,并且必须从beta或prod应用商店中安装。 […]

大规模自动化移动交付

Fastlane最佳做法 我大规模使用Fastlane的旅程始于为一个团队开发的iOS应用程序构建全自动连续交付系统。 这发展成两个移动应用程序: 一个由多个团队开发的Android应用程序和一个iOS应用程序。 当然,这些团队采用了不同的工具集,各种测试环境以及不同的应用程序配置。 带着我的羽毛,我被要求在两个平台上的许多应用程序中执行相同的操作,这些应用程序具有许多开发团队,许多环境和许多外部资源。 我有提到“很多”吗? 要使数十个团队的数百名开发人员的工作自动化,从而为数十种移动应用程序做出贡献,是很困难的。 团队具有不同的开发方法,架构,工具,发布节奏和门控要求。 要实现这些折衷的交付目标,就需要删除手动流程,提高自动化可靠性,并使团队能够灵活地定义和支持各种流程。 首先,让我们奠定Fastlane基础,然后深入研究解决许多不同目标的实施细节。 您可以在GitHub上找到完整的代码示例集。 访问 Scaling iOS CI / CD的4课 ,了解此过程的其他方面,包括构建可 伸缩的iOS 执行环境以及我们在此过程中面临的三个挑战(环境不一致,容量有限和CI / CD不够灵活)。 Fastlane 101 —基础知识 Fastlane是一个非常活跃的开源项目,使用Ruby实现,目前由Google赞助。 项目维护者可以迅速响应社区提出的问题,并热烈欢迎外界的贡献。 Fastlane作为统一框架,可为iOS和Android应用程序定义自动化流程。 它甚至可以更好地将流程定义与使用这些流程的项目一起移入版本控制中。 “ Fastlane是为您的iOS和Android应用自动执行Beta部署和发布的最简单方法。 🚀它可以处理所有繁琐的任务,例如生成屏幕截图,处理代码签名以及发布您的应用程序。” — Fastlane文档 Fastlane术语 项目 :利用Fastlane的代码库。 Fastfile :包含使用Fastlane特定于域的语言(DSL)进行项目编码的文件。 action :在Fastfile(文档)中使用的单个可配置操作。 车道 :构成一个过程的动作的集合。 通道可以调用其他通道。 private_lane :只能由其他通道调用的通道,不能直接在命令行(文档)上调用。 function :一个封装逻辑的Ruby函数,可以在单个Fastfile中重用而无需更改通道。 plugin :一个Ruby宝石,封装了其他现成的未提供的动作。 开发期间: 构建 :使用调试构建设置 二进制 […]