Tag: DevOps

iOS管道中DevOps友好XCTest的重要提示

最初在 这里 发布在XCBlog上 苹果已经引入了XCTest框架,可以为各种苹果平台创建单元,集成,性能和UI测试。 XCUITest是XCTest之上的一个性感扩展,它使开发人员可以为iOS和macOS应用编写UI测试。 自从在WWDC 2015中启动以来,XCUITest受到了很多关注和增强。 它使用Swift语言创建测试,这使iOS开发人员可以轻松地使用相同的编程语言为iOS应用程序添加UI测试。 另一方面,DevOps和Continuous Delivery实践诱使企业在开发新功能后立即发布它们。 根据权衡,单元和集成测试是轻量级的,并且速度更快。 但是,UI测试非常缓慢,难以维护。 许多移动测试金字塔表明,我们应该进行最少的UI测试,并涵盖业务逻辑较低级别的轻量级测试。 但是,UI测试是不可替代的,并且如果执行得当,则可以在更高的级别上提供更多的价值。 就发布应用程序的信心而言,单个UI测试可以击败数千个单元测试。 为了混合使用DevOps和XCTests的实践,我们必须在不干扰CI / CD管道的情况下,就如何编写XCTest做出一些明智的决定。 在本文中,我们将介绍一些对DevOps友好的XCTests的技术。 为了允许频繁发布iOS应用,设置和维护CI / CD管道非常重要。 iOS开发中最痛苦的事情之一就是发布了该应用程序。 它涉及许多活动,这些活动可能容易出错,重复且耗时。 CI / CD管道的作用是使所有无聊的任务自动化。 典型的iOS发布管道包括以下内容 查看源代码 Swift代码的静态分析(例如SwiftLint) 编译和构建iOS应用 运行各种测试,例如单元,集成,API,UI,性能,安全性 代码签名和存档iOS应用 将iOS应用分发到iTunes Connect或第三方测试服务 创建标签或在Source Control上发布,例如Github Releases 最后但并非最不重要的一点是,通过发行说明通知人们有关新版本的信息 可能有更多的东西正在筹备中,但上面列出了一些非常常见的东西。 很明显,如果没有自动化测试,CI / CD管道将无法完成。 自动化测试提供了释放iOS应用程序的价值和信心,而无需担心。 现在,我们将看到如何精巧地编写XCTest,以在不影响iOS应用程序质量的情况下加速管道。 用单元测试覆盖所有生产代码始终是一个好主意,这样Continuous Integration可以在生命周期的早期检测到错误。 单元测试通常写得很快,而且琐碎。 使用XCTest,我们可以通过编写单元测试来覆盖大多数代码。 在某些情况下,我们必须编写集成测试,而单元测试不足以覆盖业务逻辑。 进行轻量级和更快的测试的好处是生成速度更快,可以提供早期反馈。 苹果在这里用XCTest框架编写单元测试的文档非常丰富 iOS应用程序使用后端或服务器端API是一种非常常见的做法。 确保iOS应用使用的API遵循消费者驱动的合同,这一点非常重要。 否则,他们可能会完全破坏iOS应用程序。 […]

排名前五的Cloud iOS持续集成服务器奥运

iOS应用程序的持续集成(也称为CI)是我最喜欢的主题之一。 随着iOS团队中开发人员的增加,持续集成对于每个iOS项目都至关重要。 到目前为止,我对用于iOS项目的自托管CI服务器(如Xcode Server,TeamCity和Jenkins)具有深刻的经验。 但是,市场上仍然存在着一系列基于云的CI服务,这些服务在最近几天变得越来越流行。 这些基于云的CI服务有很多文章和推文。 我热衷于尝试这些服务,并通过将它们与我最喜欢的个人项目结合使用来获得一些机会 XCFit 。 为了做到这一点,我决定参加一场奥运会比赛,其中涉及大多数基于云的iOS持续集成服务候选人。 目的 除了TravisCI,我参加过的大多数服务都是我以前从未使用过的。 对我来说,这将是个很好的机会,让我自己熟悉那些CI服务并使用我的个人项目XCFit比较它们。 这次奥运会的目的是分享我对基于云的iOS CI服务的经验和第一印象。 请注意,本竞赛的目的不是推荐您应为iOS项目使用的特定服务。 竞赛的全部目的是尝试分享这些基于云的iOS CI服务的第一印象。 免责声明:所表达的观点仅是我个人的观点,并不代表这个世界上任何其他人的观点或意见。 此评估仅针对 XCFit 项目 执行 ,并且可能因项目而异。 奥运选手 参加奥运会的选手是最常用的基于云的CI服务器,它支持iOS和macOS平台。 当前列表中有这些球员 BuddyBuild 比特里斯 TravisCI 永不编码 CircleCI XCFit:游戏 这项奥林匹克竞赛将与XCFit项目进行竞争,我们将使用该库来尝试上述CI服务的功能。 这是我最喜欢的宠物项目XCFit之一,该项目是一个小型库,使我们能够以行为驱动开发(又称为BDD)的方式编写XCUITests。 此项目是CI服务器测试的有趣候选者,因为它包括 随CocoaPods和Carthage发行的Swift框架 可以通过Swift Package Manager分发的Swift Package 使用Carthage构建的XCFit框架的示例应用程序 使用RubyGems分发的Ruby包下载Xcode模板 由于该项目涉及很多工作,因此有趣的是,看看所有这些基于云的CI服务器如何对待该项目以在各自的平台上运行构建。 奥运田径 奥林匹克运动会,我们将用于本届比赛的是 注册和项目设置 默认构建配置 生成执行 建立人工制品和测试报告 真实设备测试 构建定制 并行化和并行构建 建立管道 基础架构即代码 […]

使用Transporter从Linux处理iOS App元数据

苹果公司在WWDC18上宣布了新的AppStore Connect API,可直接与App Store通信。 为了更多地了解这些API,请参阅以前的博客文章。 这显然是巨大的,并且改变了游戏规则,但苹果公司还宣布了另一件事,这可能是在WWDC会议上有关“ App Store Connect的新功能”的注意事项,它支持Linux平台上的Transporter工具。 这意味着我们现在可以使用Linux服务器上载和验证iOS应用程序元数据和预览。 在本文中,我们将探讨如何使用Trasporter工具使用Linux服务器处理App Store。 在开始使用Linux之前,让我们评估一下Trasporter是什么以及目前如何在macOS服务器上使用它。 运输工具也称为iTMSTrasporter。 iTMSTransporter代表iTunes Music Store Transporter,它是Apple基于Java的命令行工具,用于上传应用程序二进制文件,上传屏幕截图,更新应用程序元数据,管理应用程序价格,管理应用程序内购买等。该实用程序是Xcode随附的,因此只要您具有Xcode,就无需显式安装它。 二进制文件可以在这里找到: $ /Applications/Xcode.app/Contents/Applications/Application \ Loader.app/Contents/itms/bin/iTMSTransporter 您可以在$ PATH中添加以上内容,以便可以直接从终端使用ITMSTransporter。 现在,我们可以使用以下方法探索Trasporter随附的各种命令行选项 $ iTMSTransporter-帮助 我们可以按照Apple官方文档中的说明为Trasporter工具提供各种选项,但我们可能很少需要与验证和上传元数据有关的选项。 总之,这是三步过程 使用lookupMetadata参数下载应用程序的.itmsp文件存根软件包。 使用verify参数验证应用程序包的内容。 最后,使用上载参数将应用程序包上载到iTunes Connect。 Transporter可以验证元数据并将其上传到App Store,但是上载伙伴必须经过Transporter认证过程的批准才能使用此交付方式。 以前使用的交付方式是Signiant和Aspera。 有第三方方法,而不是Apple的方法。 借助macOS,Trasporter附带了Xcode,因此无需明确安装。 在网上搜索时,我在此博客文章中找到了macOS的Traspoter工具的位置 https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/resources/download/Transporter__OSX/bin/ 但是,当涉及到Linux时,没有Xcode,因此我们需要找到Apple官方服务器上某处托管的二进制文件的位置,然后在Linux上安装。 为了安装Trasporter,我们需要以将运行Transporter工具的用户身份登录。 苹果公司根据内容类型托管了Trasporter工具,例如对于音乐:http://itunespartner.apple.com/music/tools。 我们必须选择Red Hat Enterprise Linux链接才能下载shell脚本安装包。 我们将获得压缩包iTMSTransporter_installer_linux.1.9.8.sh.gz,然后可以根据您的Linux风格使用合适的解压缩软件来解压缩该软件包。 $ gunzip iTMSTransporter_installer_linux.1.9.8.sh.gz 该软件包具有shell脚本,我们需要使用admin用户明确运行该脚本。 $ sudo […]

为什么需要在2018年将移动DevOps保留在内部

最初发布在XCBlog网站上 ,请阅读原始博客以获得更好的图形! 信不信由你,建立和管理DevOps工具是一项令人费解的活动。 对于Web和移动应用程序开发都是如此。 它需要对服务器和网络技术,具有复杂脚本的自动化,云技术和24 x 7监控支持的深刻理解。 这使许多企业家,项目或计划经理感到头疼,以至于许多人选择将此流程完全外包给其他公司或使用基于云的提供商来处理。 DevOps活动成为Web和移动应用程序开发中的大人物。 应用程序开发人员不具备处理DevOps工具的技能,并且拥有专门的DevOps团队对于企业而言过于昂贵,因为它不会直接产生业务收入。 在这篇文章中,我们将看到为什么您急需在2018年考虑内部移动DevOps。是的,在2018年,因为您可能会受到新年开始时Apple购买的BuddyBuild的影响。 希望在本文结尾处,您将看到使用内部移动DevOps的一些好处 那么DevOps到底是什么呢? 那是一百万美元的问题,简称为“没人知道”,也就是说,DevOps在任何地方都没有具体定义。 关于DevOps的说法有很多。 有人说这是一套工具,这是新的开发方法,是管理CI / CD的团队,是职务或职位,但没有一个是正确的。 我对DevOps的理解非常简单,无论是接受还是抛出,但是我对DevOps的定义是 “您为加快免费软件发布的速度而采取的一切操守都被视为DevOps” DevOps庞大,有数百万篇博客文章,数千篇白皮书,数百本书籍,并且有新颖的作品来解释DevOps的概念。 OMG有一个名为“凤凰计划:有关IT,DevOps和帮助您的业务成功的小说”的小说,这个名字很长,但是它包含了DevOps的细节。 我强烈建议所有想要了解DevOps的人员使用此工具。无需遵循针对DevOps实践的预定义流程,技术或工具,但是,DevOps在小说中提到了三个应该遵循的支柱,即系统思考,放大反馈循环,持续实验和学习。 开发网站和手机应用程序是两项完全不同的活动。 它们在技术,基础架构,流程,工具和技能方面各不相同,因此很难将两者融合在一起。 结果,用于Web和移动设备的DevOps实践或工具也有所不同。 管理Web和DevOps的技术和过程可以相同,但是工具上存在一些主要差异。 我们将在这里介绍5个基本差异 浏览器与设备 Web应用程序必须支持各种桌面/移动操作系统和浏览器,而移动应用程序必须支持具有多种变体的特定于平台的移动操作系统。 移动应用程序的各种环境目标。 移动必须支持多种变体。 例如,iOS在iPhone,iPhone +和iPad变体上具有各种iOS版本。 App Store与托管服务器 移动应用一旦发布,便托管在AppStore或Play商店中,但是Web应用需要在数据中心或云中托管服务器。 如今,大多数Web应用程序都托管在AWS,Azure或类似的云中。 Web应用程序始终需要操作和监视,但是移动应用程序不需要监视托管,因为AppStore或PlayStore将负责托管。 拉与推部署 Web应用程序始终具有推送部署,这意味着可以按需部署新版本的网站,并且用户无法选择接受或拒绝更新。 但是,移动应用程序具有拉式部署,除非强制执行,否则用户可以选择是否更新到新版本。 如果发布移动应用程序,则不会回滚。 另一件事是,在移动世界中没有持续的部署,因为苹果或谷歌必须在发布新版本的应用程序之前等待几天才能批准应用程序。 移动应用程序的发布比Web应用程序的风险更大。 技术领域 用于开发Web和移动应用程序的工具和技术存在主要差异。 用于移动原生开发的编程语言是Swift,iOS和Java的Objective-C或Android的Kotlin。 还有其他一些混合框架可用于一起开发Web和移动。 但是,可以使用数百万种编程语言(例如Java,Ruby,PHP,Python,JavaScript等)来开发Web应用程序。平台之间的持续集成工具也相差很大。 例如,詹金斯(Jenkins)是一种非常流行的工具,可以将Web应用程序部署到任何地方,但是对于移动持续集成而言,它并不总是一个好的选择。 后端服务 不幸的是,不可能将所有必需的数据放入应用程序中,因此Web和移动应用程序都依赖某种向其提供数据的后端服务或API。 这些服务可能设计也可能不设计为同时服务于Web和移动应用程序,因此找出后端服务中的任何更改可能会影响到移动应用程序或Web应用程序或两者都必不可少。 移动应用程序也需要单独注意。 […]

iOS代码签名教程系列

我刚刚在个人博客(也称为XCBlog)上发布了有关iOS代码签名主题的一系列博客文章,以介绍iOS代码签名过程的基础。 不幸的是,它的内容太多,无法像在Medium上那样重新发布,因此我将在这里共享链接。 代码签名和配置文件配置文件一直是一个烦人的问题,并且将继续存在,直到iOS开发人员完全了解代码签名的基础。 本系列文章涵盖了iOS代码签名过程的基础。 尽管在线上有多种资源可用,并且Apple拥有有关代码签名过程的整洁文档,但这仍然是一个谜。 在本系列中,我们将尝试从头开始理解代码签名过程,包括代码签名到实际代码签名过程本身所需的内容。 只要适用,我们还将探索GUI以及命令行处理方式。 我们将从“证书签名请求”开始获取iOS开发证书,然后介绍证书及其内部部分。 了解证书后,我们将深入研究配置文件,最后,我们将了解代码签名过程。 通过对Web和Apple文档进行一些研究,可以用我自己的文字或语言写这些系列文章。 我已在最后一篇文章中介绍了所有这些参考资料。 我还附上了Apple Developer Portal和Xcode的一些屏幕截图,以便读者可以理解这些概念。 我试图隐藏所有敏感内容,但是如果有错误暴露的地方,请不要骇我。 iOS代码签名:1.入门 iOS代码签名:2.证书签名请求 iOS代码签名:3.证书 iOS代码签名:4.设置配置文件 iOS代码签名:5.签名iOS应用 ****************************************************** **** 希望您会喜欢本系列的iOS代码签名。 如果有一些误导信息,请随时与我联系。 像XCBlog的 XCTEQ 发布的帖子一样 ? 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 在 Github 上 搜索我们的 服务 ,开源项目, 或者在 Twitter , Facebook , Youtube 和 LinkedIn 上关注我们 。 下载我们的 XCBlog iOS应用程序以离线阅读博客。 X CTEQ 是一家专门从事基于Mobile DevOps,CI […]

Swift中XCTest和XCUITest的网络存根选项

原始文章:原始文章已发布在我的个人博客XCBlog上,继续阅读 此处 以获得更好的图形。 要阅读有关iOS DevOps和iOS CI / CD的更多有趣文章,请 在此处 访问我的博客 。 不要害怕没有广告! 每个iOS应用程序都要求数据显示在应用程序中。 不幸的是,我们无法将所有数据放入我们的iOS应用程序中。 iOS开发人员必须提出网络请求,才能从互联网获取此数据并在应用程序中使用它。 苹果提供了各种库和框架(例如URLSession,NSURLProtocol)来处理网络层,并且有一些第三方框架(如Alamofire)可用于处理网络请求。 但是,由于在测试网络层时使用了不同的方法,因此以网络请求形式测试异步代码变得非常复杂。 在这篇详细的文章中,我们将探索在Swift中测试网络层的所有可用选项,并涵盖可与XCTest框架一起使用的网络存根库的详细信息。 Swift中的网络测试 使用Swift编写的iOS应用的网络测试可以根据项目需求在单元,集成或UI级别执行。 单元和集成测试通常是快速而稳定的,而UI测试则是缓慢而脆弱的。 根据我在互联网上阅读的内容,人们正在使用各种方法在iOS中进行网络测试,其中一些常见方法如下 在单元测试或集成测试中使用协议模拟类 模拟是脆弱而艰苦的,到Swift时模拟变得更加困难。 Swift中没有可用的成熟模拟库来生成类似Java,Ruby,Python或其他语言的模拟。 开发人员必须手动编写所有模拟,并将测试代码与生产代码紧密耦合。 这里有一篇很棒的关于iOS网络测试的文章,以了解有关如何使用协议进行模拟的更多信息。 这种方法无疑使该应用程序更具可测试性,但是它涉及编写很多协议和模拟类。 在Swift中,我们需要模拟我们需要测试的大多数类和方法。 对于iOS开发人员而言,这将是繁重的工作,很快便陷入混乱。 记录和播放网络请求 Swift具有一些库,这些库使我们能够记录网络请求并进行回放,从而避免单元测试通过网络层。 它们将记录的数据存储在文件中,并且该数据被重用而不是进行网络调用。 最受欢迎的库是DVR,可对iOS应用发出虚假的NSURLSession请求。 还有另一个库Szimpla可以执行类似的操作。 您可以在这里在Szimpla上观看会议,在Realm学院中在DVR上观看会议。 使用库存根网络请求 网络层还有另一种方法,它是进行网络调用而不是模拟URLSession并返回存根或静态响应而不是真实响应。 使用存根,我们仍然可以实现网络测试的目标,并且不必将测试代码与生产代码紧密耦合。 我们将看到可用于通过Swift存根网络请求的库的详细信息。 一些最受欢迎的库是用于XCTest(unit)测试的OHHTTPStubs,Mockingjay,Hippolyte。 使用XCUITest框架与UI进行交互 用户界面测试贯穿网络层,涵盖了网络测试的所有方面。 苹果有XCUITest框架来涵盖Xcode UI测试。 我们可以使用一些库来为UITest存根网络。 一些流行的库是Swifter,SBTUITestTunel和XCUITest(UITest)的Embassy。 上面提到的所有方法都各有利弊,因此选择适合项目需求的方法至关重要。 在这篇文章中,我们将看到如何为单元和用户界面测试配置网络层。 Git定位应用 我们将在整个演示中使用GitHub API。 我们将向URL https://api.github.com/users/shashikant86发出网络请求,并从API获取位置并显示在应用程序中。 您可以通过在浏览器中访问JSON响应来查看它。 […]

无需虚拟化即可在Mac OS上重现和包含CI

最近,我一直在研究Mac OS(特别是iOS)的持续集成的状态。 我想了解人们在Mac OS上如何进行CI,以及常见的最佳做法是什么。 不幸的是,对于我来说,没有什么惊喜,因为Mac OS的构建自动化状态非常糟糕。 在这篇博客文章中,我将总结一下我的发现,并描述我提出的实验性解决方案。 首先,我们需要弄清楚我们在寻找什么版本。 良好的CI设置通常旨在确保以下几点: 灵活可复制的环境 。 应该可以指定执行构建的环境。 不同类型的构建可能需要不同版本的工具和框架,CI应当保证某种类型的构建将始终在同一环境中执行。 隔离建筑物 。 顺序或并行构建不能相互干扰执行。 对于每个新构建,应从先前构建的工件中清除环境。 表现 。 与在开发人员的本地计算机上构建的CI相比,CI构建的性能应具有最小的影响。 常见的CI系统使用一种模式,在该模式下,执行构建AKA工作的计算机会安装一个称为CI代理的程序,该程序会不断拉动主服务器进行工作。 早在20年前,代理只是运行shell脚本,开发人员的工作是确保这些脚本编写正确并提供上述保证。 但是根本不可能做出脚本,最重要的是要保持这样的保证。 从那以后,不幸的是,并没有发生很多变化 。 该体系结构中最显着的变化是使用虚拟机作为CI工作者的转变,以拥有这种灵活且可复制的环境。 除此之外,设置CI系统甚至使用完全托管的解决方案变得更加容易。 这是Uber工程师的精彩演讲,内容涉及他们从一台物理Mac Mini到数千台虚拟机的旅程(始于13:20,Medium不支持时间标签)。 这篇演讲基本上展示了上述事物的整体演变。 这是一个./chamber.sh ./script/ci.sh脚本,可以像./chamber.sh ./script/ci.sh一样使用它来在./chamber.sh ./script/ci.sh中运行现有的CI脚本。 该脚本已经在多个项目上进行了测试,但仍然是WIP。 我强烈建议您尝试一下并报告任何问题。 不过,请阅读它,其中包含有关其功能以及如何调试/配置功能的详细注释。 运行虚拟机仍然很困难。 如果不是苹果公司,那么也许像Veertu这样具有现代Anka虚拟化技术的公司将为Mac OS的自动化带来类似Docker的感觉。 在此之前,人们将寻找解决方法和黑客手段。 本文中介绍的Chamber概念只是一个有趣的想法,似乎适用于一些中小型项目。 但这是实验性的 。 仍然存在一些问题: 测试各种项目。 使xcodebuild在nix-shell 。 我无法使其正常运行,因此使用nix-shell来计算用于在沙箱中运行脚本的PATH 。 目前尚不清楚如何支持多个Xcode版本。 应该是Nix包装吗? 它应该是一个单独的工具吗? 我希望这是一个有趣的阅读。 如有任何疑问,请随时在Twitter上对我进行ping操作。 […]

没有Fastlane的iOS连续交付的五个选项

原始文章发表在XCBlog上 Fastlane工具可自动执行整个iOS CI / CD管道,并允许我们将iOS基础结构保留为代码。 Fastlane提供了一系列工具,可自动执行从分析,构建,测试,代码签名和存档iOS应用程序的几乎所有操作。 但是,如果您向里看,它不过是本机Apple开发人员工具之上的Ruby层。 在某些情况下,Fastlane可能节省了一些时间,但是值得一提的是,Fastlane因频繁的重大更改而浪费了多少开发人员时间。 不断学习Ruby和Fastlane的自动化方法浪费了很多开发人员的时间。 像CocoaPods一样,Fastlane可能是您的iOS项目中使用Ruby的另一个大笨蛋,它与iOS开发无关。 学习某些本地Apple开发人员工具并从iOS开发工具箱中完全删除Ruby和其他第三方工具(如Fastlane)并不难。 在这篇文章中,我们将介绍iOS开发人员在使用Fastlane时面临的问题,以及Fastlane的当前替代方案。 五个快速通道问题 Fastlane声称通过自动执行常见任务为开发人员节省了时间。 在Fastlane能够按预期工作的情况下可能确实如此,但考虑到Fastlane在设置,调试和管理方面浪费了多少开发人员时间,这一点也很重要。 在本节中,我们将看到iOS开发人员使用Fastlane可能面临的常见问题。 1.红宝石 在iOS项目中使用Fastlane的第一个主要问题是Ruby。 通常,iOS开发人员并不擅长Ruby,但是要使用Fastlane或CocoaPods之类的工具,他们必须学习与实际的iOS开发无关的Ruby。 设置Fastlane工具需要对Ruby以及RubyGems和Bundler的工作方式有很好的了解。 最近宣布有Swift版本的Fastlane摆脱了Ruby,但它只是Swift在后台执行Ruby命令。 我怀疑Swift版本的Fastlane的可用性。 我已经在这篇文章中写了我的初步印象。 Fastlane拥有良好的文档,但是iOS开发人员仍然必须使用Ruby编写脚本来自动化iOS发布管道的所有基础架构。 2.频繁更新 Apple不断更改本机工具,从而不断破坏Fastlane工具。 他们需要始终追赶苹果和谷歌(如果是Android的话),以适应Fastlane中的这些变化。 这要求Fastlane开发人员实现这些功能并发布新版本的Fastlane。 如果Fastlane版本不是由Bundler管理,则大多数时候更新Fastlane版本都需要更新现有的Fastlane脚本。 由于更新的缘故,可能会经常导致内部版本崩溃,iOS开发人员需要花费时间来分析Fastlane中已更改的内容并相应地修复内部版本。 这种突破性的更新打扰了iOS开发人员的主要开发流程,最终浪费了数小时来修复构建。 使用Fastlane的痛苦之一是,在早期版本的Fastlane中配置的选项并不总是与较新的版本一起使用,如果您搜索解决方案,则最终将获得针对不同版本Fastlane的相同问题的多个解决方案。 3.耗时的设置和维护 尽管Fastlane提供了很好的模板代码入门指南,但是编写脚本来自动化iOS发布管道所需的所有内容并不是一件容易的事。 我们可能需要根据需要自定义选项,这要求这些选项在Fastlanes中的编码方式。 然后,我们可以使用不同的通道来编写管道脚本。 要设置所有内容,需要大量时间来学习Fastlane和Ruby工具箱。 当您设置所需的所有内容时,该工作并未完成,如上所述,它需要对Fastlane更新进行持续的持续维护。 4.难以贡献 可能需要根据公司特定的规则配置iOS发布管道,或者需要Fastlane进行自定义操作。 唯一的选择就是为Fastlane编写插件。 当前,编写插件的唯一方法是编写可以作为Fastlane插件安装的Rubygem。 同样,它需要对Ruby生态系统的深入了解,而通常iOS开发人员都不熟练。 不幸的是,iOS开发人员无法为他们当前在工具箱中使用的工具做出贡献。 最重要的是,为Fastlane做出贡献的过程既耗时又充满自动化机器人。 首先创建一个Github问题作为提案,然后进行无休止的讨论。 您可以在此处阅读有关Fastlane贡献指南的更多信息。 5. Github上的未解决问题 GitHub上存在多个问题,其中一些问题是由自动bot封闭的,没有为用户提供正确的解决方案。 很好的例子是,我如何浪费几天来确定Fastlane匹配支持企业应用程序是否使用Xcode 9构建发行版。在寻找解决方案时,我发现还有其他人也在寻找解决方案。 这是Fastlane bot在未提供适当解决方案的情况下解决的未解决问题的示例。 我已经尝试过针对11090、10543、10325、10458等问题提供的多种解决方案。阅读所有这些内容之后,我无法弄清楚哪种方法适用于企业构建。 […]

年度回顾2018:主要学习和个人成就

原始链接: 年度回顾2018:主要学习和个人成就 今天是2018年的最后一天,今年,2018年我的个人和职业生涯发生了很多惊人的事情…… shashikantjagtap.net 今天是2018年的最后一天,今年,我的个人和职业生涯发生了很多惊人的事情。 对于生命中如此美好的一年,对于2018年,我感激不尽。 去年,我写了类似的文章“我在2017年经历的十件事”自我回顾了我在2017年的工作和成就。如果您是我的博客a.ka的读者或关注者。 XCBlog,无论是在我的个人博客上还是在Medium或DZone上,您都必须对iOS工程活动充满热情,而不仅仅是在Xcode中编写功能开发代码(Swift / Objective-C)。 互联网上已经有很多Swift和iOS博客,但是XCBlog涵盖了苹果生态系统中iOS工程活动中的怪异事物,例如基础设施自动化,脚本CI / CD管道,处理代码签名,管理复杂的iOS基础设施,依赖管理等。 XCBlog一直领先于iOS自动化和DevOps空间中的新事物。 在这篇文章中,我将介绍2018年的关键学习,成就,成功,失败和福祉。 当科技行业赞赏您所做的工作,而辛勤的工作真的能带来回报时,这真的感觉很棒。 显然,这不是一个一夜之间的过程,就像一个SEO,内容/作品的真正价值逐渐显现出来。 DevOps 100通过TechBeacon 当我在TechBeacon发布的DevOps 100列表中获得一席之地时,这是我感到骄傲的时刻。 TechBeacon已发布了DevOps 100,DevOps 100名领导者,从业者和专家将在社交媒体上关注。 TechBeacon精心挑选了100名杰出作家,演讲者和领导者,他们可以教给您很多有关DevOps的知识。 主题包括通用DevOps,云,容器,无服务器,监视,系统工程等。我在通用DevOps部分中被归类为我在iOS应用程序的DevOps和CI / CD中的贡献。 您可以在此处详细阅读我的整个DevOps旅程。 FitSmallBusiness评选的2018年最佳技术影响者 对我来说,另一个值得骄傲的时刻是当它被FitSmallBusiness选为2018年度最佳技术影响者名单时。 很高兴能跻身顶尖技术影响者之列。 FitSmallBusiness凭借强大的社交媒体影响力在网络上搜寻技术影响者,并将以下2018年顶级技术影响者列表汇总在一起。他们发现列出的影响者具有与技术行业以及相关行业的杰出证书,专业知识和技能,以及数量惊人的社交媒体关注者。 2018年最大的成就是我在伦敦成立了自己的公司XCTEQ Limited。 公司的使命是在组织内部实现移动DevOps和智能测试自动化实践,并为客户提供丰富的营销内容。 我通常在周末在XCTEQ限时工作,因为我仍然想长期从事全职工作。 目前,XCTEQ为客户提供博客或白皮书等内容,但计划雇用和培训更多作者。 与XCTEQ客户端(例如Bitbar和Nevercode)合作的主要好处是,我可以提前接触到闪亮的新工具和技术。 例如,与Nevercode合作使我有机会与Flutter和Codemagic CI / CD一起用于Flutter应用程序。 同样,与Bitbar的合作使我有机会尝试使用世界上最大的AI驱动的应用程序测试解决方案(也称为AI Testbot)来使用人工智能测试移动应用程序。 您可以在此处找到有关XCTEQ产品,服务和客户的更多信息 作为一名充满激情的技术博客,我今年写了约75篇文章。 其中一些写在我的个人博客上,另一些则写给客户或雇主。 XCBlog上的60帖子(个人博客) 今年,我设法在个人博客上写了60个帖子(包括这篇文章)。 这些帖子也重新发布在Medium和DZone上,这意味着,我每个月只能在自己的个人博客上撰写5个帖子。 您可以在shashikantjagtap.net上阅读所有这些文章。 Bitbar的11个帖子(XCTEQ客户端) Bitbar博客上有11个帖子,这些帖子包括XCUITest 101系列以及其他一些针对移动应用程序的基于AI的测试技术。 […]

即将发布的iOS DevOps书的状态

2018年8月,我在iOS DevOps上宣布了该书,该书的草稿内容已在XCTEQ网站上发布。 从那以后,LinkedIn和Twitter上的许多联系对这本书产生了兴趣。 首先,我要感谢对本书有兴趣的所有人。 当时,我承诺会在2019年初发行该书。现在是3月,我开始收到感兴趣的读者的电子邮件,消息和评论。 这是状态发布,解释了iOS DevOps书籍的状态,完成的内容,剩余的内容以及发布书籍的时间表。 在LeanPub上预订以获取反馈 首先,这本书已上载到Leanpub,供用户查看内容并表现出更多的兴趣,使我有更多的写作动机。 您可以在此处查看Leanpub上的图书概述。 在Leanpub上获得这本书的整个想法是让展示用户进步,并获得实际上有多少人对该书感兴趣的信息。 我尚未决定这本书的定价计划。 我绝对希望免费分发它,但根据权衡取舍,免费提供某些东西会使人觉得书的内容没有价值,而且经常被读者忽略。 另一方面,I或XCTEQ都没有与该书一起推广的产品,因此我不完全确定该书的定价模型是什么。 我需要您的帮助才能查看内容,并让我知道您想为这本书支付多少费用。 同样,通过将图书上传到Leanpub,您会在图书完成时收到通知。 因此,随时访问Leanpub,并表现出一些激发我的兴趣。 该书还带有一个Twitter主题标签#iOSDevOps,因此可以随时在主题标签中进行鸣叫,以便我在Twitter上检查感兴趣的地方。 iOS DevOps实用指南 无论您如何开发iOS应用程序(本机或跨平台),这本书都将指导您为… leanpub.com 设置持续交付。 图书状态 现在,我们将讨论这本书的状态。 现在,这本书与您跨平台或本地开发iOS应用程序的方式无关,其思想和概念将适用。 无论使用哪种技术堆栈来开发iOS应用程序,本书都将引导您充满信心地为iOS应用程序设置“持续交付”。 它涵盖了用于自动执行iOS部署的基础Apple Developer工具和现代CI / CD实践。 本书全部关于自动化iOS基础架构和生态系统,而不是关于iOS开发。 新增/删除的内容 本书首次发行时,大约有30章,分为6节。 在写这本书的时候,发生了几件事,使我删减了本书的几章。 XCUITest的整个部分已从书中删除,因为与书无关。 很少有基于Fastlane工具的章节被删减,而App Store Connect API将成为自动发布iOS版本的首选。 相反,我在App Store API上增加了几章。 在最初的计划中,有一章专门介绍如何在Travis CI,BuddyBuild等不同的云提供商上设置CI。但是,这类服务的提供和功能始终在变化,服务被出售,因此不值得花时间在这些服务上。 相反,我们将介绍一种针对CI的内部解决方案和一种Cloud解决方案。 具有状态的书的最终内容 现在,内容的最终草案已准备就绪,其中包含六个部分,共22章。 第1部分-连续交付和移动DevOps的基础(已完成部分) 第1章,“ DevOps和CI / CD的基础” 第2章,“ iOS开发挑战” […]