Tag: travis ci

使用Fastlane和Travis CI建立发行自动化

曾经有种感觉,就像您花费大量的办公时间来构建测试仪一样。 您正在构建版本,而不是对它们报告的错误进行修复。 好吧,如果您这样做了,那么您很幸运。 我们将讨论如何使用iOS开发人员可以使用的两个最简单的工具解决该问题。 快车道 特拉维斯CI 在将Swift集成到项目中(用Objective-C编写)之前,我们的构建时间非常短。 但是随着我们开始越来越多地在Swift中编写代码,这种情况发生了变化。 创建存档只需要3到5分钟的时间,而花费了15到20分钟的时间。 我们尝试了Apple建议的所有优化技术,但令我们沮丧的是,仅几分钟就对我们有所帮助。 如果您要花一些时间来上传构建版本,则很容易花费我们30-40分钟。 因此很显然,我们必须解决此问题,因为它会占用开发人员的时间及其生产力。 所以我们开始吧 如果您想直接跳到本教程,请向下滚动。 对于好奇的人,这里有一些关于我为什么选择Fastlane和Travis的见解。 快车道: 该工具使您可以非常轻松地自动化构建过程。 您的所有进程都位于这些很小的“通道”中,这些通道是可读的,因此,即使是新手,也可以通过查看代码确切地知道发生了什么。 而且,fastlane提供的输出非常有见地并且易于阅读。 管理代码签名:O !!! Fastlane提供与Fabric,HockeyApp,Testflight等第三方应用程序的完美集成。我们使用Fabric从测试人员下载构建的位置上传构建。 由于我想避免使用Fabric编写集成代码,因此Fastlane对我来说是一个显而易见的选择。 它拥有一个了不起的开发人员社区,您可以找到最常见问题的解决方案。 特拉维斯CI: 我不得不使用CI工具来分发我的构建,因此我选择在Jenkins和Travis之间进行一次小型调查。 以下是Travis与Jenkins相比的一些优势: Travis集成了GitHUB Web挂钩! 它还为您提供了一些漂亮的功能,例如在拉取请求中显示构建状态,队列管理,仅在最新提交时运行作业等。 您在Jenkins上确实有GitHUB插件,但是这一次您需要花费时间来集成它。 特拉维斯不需要任何设置。 我只需要创建一个帐户就可以了。 Travis是基于云的解决方案,因此您无需像Jenkins那样依赖于系统。 无论如何,足够了……。 让我们继续前进!!! 该工具将使我们的生成生成过程自动化。 我们将使用fastlane的两个工具: 匹配—管理不同分发方案的证书和配置文件 健身房—创建iPA 在系统上安装fastlane brew cask install fastlane 转到您的项目文件夹并运行 fastlane init 这将在项目目录中创建一个名为fastlane的文件夹,其中包含要在其中写入“ 泳道”的fastfile 。 通道遵循非常简单的结构: 车道:build do 选项 […]

在iOS项目上使用Travis-CI和Fastlane设置CI

持续集成(CI)是一种很棒的软件工程实践。 它要求开发人员在每次提交之后频繁提交。 这样,可以自动运行测试,计算覆盖率,执行静态代码分析等,以确保每次提交都不会破坏构建过程并且不会带来副作用。 如果提交破坏了构建,则进行更改的人员将收到一封电子邮件,需要检查并修复构建。 通常,在构建结束时,会创建一个测试版本。 通常,这就是过程,但是各个公司的过程可能有所不同。 这种工作流程的好处来自频繁的集成-您很快就会发现问题所在,并有机会快速进行修复。 团队越大,拥有这样的自动化集成过程就越重要,因为在每次提交之后,都有可能破坏代码库。 在本文中,我们将使用Travis CI和Fastlane为一个开源iOS项目设置CI。 目标是在GitHub存储库上的每次提交上运行CI,并在自述文件部分中显示有关构建状态和覆盖率的信息。 实作 特拉维斯CI 首先,您需要在GitHub上拥有一个带有单元测试的开源iOS项目。 在这篇文章中,我将与即将发布的iOS框架GirdersSwift合作。 第一步是通过单击“使用GitHub登录”按钮将GitHub帐户连接到Travis CI。 系统将要求您提供对Travis CI的某些权限,以使他们能够访问您的开源存储库。 Travis CI对于开源项目是免费的,但是对于商业项目也有一些付费计划。 成功注册Travis CI后,您应该在仪表板中看到所有项目。 找到您要为其添加配置项的配置项,然后启用绿色开关。 这就是我们目前在Travis CI上需要做的所有事情。 有了这个小的更改,我们已经告诉Travis CI,它应该为GirdersSwift回购运行连续构建,但是我们仍然没有告诉它该怎么做。 Travis CI不知道它是iOS,Android,Java还是其他类型的项目。 它还不知道是否应该运行测试,计算覆盖率等等。 我们通过在GitHub项目的根目录下创建.travis.yml文件来提供此信息。 让我们看看这个文件应该包含什么。 osx_image:xcode9.3 语言:迅捷 脚本: – fastlane ios覆盖率 如您所见,我们告诉Travis CI,它应该使用Xcode 9.3运行构建,并且语言是Swift。 在脚本部分,我们提供了每次构建后都需要执行的步骤。 在这里,我们使用Fastlane进行测试和覆盖。 快车道 Fastlane是一个出色的工具,可以自动完成与iOS开发相关的所有繁琐工作,从测试,构建,创建发行版到部署到商店。 它基于在Fastfile中定义的通道的概念。 您可以在一个泳道中定义几个动作,并且已经开发了动作,这些动作是我们iOS工程师最需要的。 通过在项目的根目录中键入fastlane init ,为项目启用fastlane。 您也可以输入您的开发者帐户信息,但这不是必需的。 这将创建一个Fastlane目录,其中包含Fastfile。 现在,让我们定义我们的覆盖范围,它将用于执行连续构建。 default_platform:ios […]

使用Slather将代码覆盖范围添加到Zendesk的iOS SDK版本中

测试覆盖范围的扩大是Zendesk Mobile SDK团队的一项持续任务。 有什么比在每次拉动请求中都提示的更好的方法来帮助实现这一点。 让我们知道我们是否正在朝着目标迈进。 早在2014年,我们的iOS SDK就开始使用Xcode 5进行工作。那时,它是一个静态库。 从那以后,它经历了许多更改和Xcode版本。 如今,这是一个由等量的Swift和Objective C编写的动态框架。Xcode项目会迅速收集灰尘,而将新工具集成到旧项目中的工作很少能顺利进行。 我们最近将危险集成到我们的项目中。 危险使代码检查的某些方面自动化。 我们一直将它用于简单的任务,例如警告我们代码中遗留的待办事项或格式错误的提交消息。 设置既简单又易于使用,它具有大量可用的插件。 Slather生成测试覆盖率报告,并旨在加入CI。 还有一个危险插件。 将其添加到我们的项目看起来很简单。 gem install danger-slather 在我们要报告测试覆盖率的方案的危险文件配置slather上添加一行。 添加另一行以显示输出。 推送至GitHub,等待Travis完成。 错误:无法加载覆盖率。 找不到覆盖率数据。 总覆盖率:NaN% 无论如何,这似乎太不可思议了。 错误消息很清楚。 我们要么没有生成代码覆盖率数据,要么Slather无法找到它。 首先,我们需要检查是否正在生成覆盖率数据。 这是在要覆盖数据的方案的测试设置中完成的。 另外,可以将enableCodeCoverage传递给xcodebuild。 在这一点上,我们假设coverage数据与构建输出位于同一位置。 我们正在将OBJROOT传递给xcodebuild,并且可以在那里看到构建输出。 我们已经将Slather配置为在同一目录中查找二进制文件以对其进行覆盖。 我们仍然No coverage directory found从Slather No coverage directory found 。 我们使用bundle show slather slather查看了Slather的代码,发现它正在运行: build_command =“ xcodebuild#{projectOrWorkspaceArgument}#{schemeArgument} -showBuildSettings 此命令获取方案中包含的所有信息。 OBJROOT不会选择将OBJROOT或任何其他环境变量传递给xcodebuild。 […]

Travis与iOS应用程序的持续集成

持续集成(CI)是一种软件工程实践,可自动构建和测试触发器,例如代码提交或提取请求。 通常,测试和部署花费了开发时间的很大一部分,尤其是当组织遵循较小的发布周期时。 持续集成使该过程自动进行! 设置持续集成涉及运行构建服务器,构建代理和大量配置设置。 您将负责维护构建服务器和构建代理。 如果很乏味,我们可以提供Travis ,它是CI的托管服务。 1. Travis仅适用于Github上的项目,免费适用于开源应用 2.它在专用虚拟机上运行。 因此,Travis会为您维护构建代理和构建服务器 3.它与GitHub无缝集成,并且易于配置。 注册Travis Travis通过Github Webhooks和服务进行通信。 前往travis网站并使用Gi​​thub进行注册。 您所有的Github公共项目都将同步,并显示在您的个人资料页面中。 默认情况下,所有项目都禁用Travis。 启用需要Travis集成的项目。 现在您可以看到Travis已添加到Github项目设置的Installed app部分。 推送提交或为项目创建请求请求,然后导航到Travis中的项目页面。 您将看到构建失败。 现在该让Travis知道这是一个iOS项目,并设置其他必需的配置。 设置.travis.yml Travis根据编程语言提供了默认的构建环境和默认的构建步骤。 但是,对于iOS,它使用Facebook的xctool,该工具无法与最新的Xcode版本很好地配合使用。 Travis使用.travis.yml来了解您的项目和构建步骤。 导航到项目的根目录,并使用基本配置创建.travis.yml vi .travis.yml 指定语言,osx_image和xcodebuild命令 语言:迅捷 osx_image:xcode9.3 脚本:xcodebuild构建 -sdk iphonesimulator -project SplitBill.xcodeproj 方案SplitBill -安静 CODE_SIGNING_REQUIRED =否 在终端中独立测试脚本以确保其正常运行。 使用xcodebuild -showsdks指定特定的SDK 使用xcodebuild -list来 找到方案和目标名称 注意x对于osx_image中的’xcode9.3’是小写 在Travis中触发构建! 繁荣! 您的构建成功。 运行测试 要运行测试用例,请在“测试”下为您的架构添加测试目标 […]

iOS版Travis CI

最近,我想为我的应用程序实现持续集成。 我想很多人和我偶然发现了Travis CI上的objc.io文章。 不幸的是,这篇文章已经过时了,它是从2013年11月开始的。 同时,自从撰写本文以来,Facebook的xctool项目中一直在讨论xctool是否要支持Xcode8。但是,我们已经在Xcode 9上了。与此同时,已经发生了很多变化,文章已过时。 我个人认为objc.io应该不时测试他们的文章,或者至少要提到所使用的技术无效或无法正常工作。 由于他们没有更新他们的文章,我觉得我应该发布更新。 因此,基本上改变的是xctool has some new commands, for example test has been replaced by run-tests 。 此外, xctool不再构建您的项目,我们必须退回到xcodebuild , xcbuild或Buck(Facebook的新项目)。 假设您知道如何使用GitHub帐户将项目链接到Travis CI,我将主要讨论.travis.yml文件。 我只强调了.travis.yml文件的一些区别。 您仍然需要在objc.io文章中添加仍然正确的其他元素。 如您所见,存在一些差异。 例如:(1)我们可以安全地将语言设置为Swift,如今,(2)应该仍然可以正常工作,但是我仍然更喜欢使用xctool 。 (3)完全是错误的, 这不再起作用 。 (4)这就是正确调用xctool ! 使用xcodebuild或您喜欢并且可能已经使用的任何其他构建系统来构建工作区。 然后使用xctool运行测试。 在第14行的摘要中,如果您将-scheme TravisExampleTests更改为-scheme TravisExampleTests ,则还可以免费运行UI测试。 这需要其他配置,因为以这种方式运行将导致断言失败: NSInternalInconsistencyException, “No target application path specified via test configuration” 。 […]

免费持续集成开源Swift软件包

苹果已经发布了自己的软件包管理器,称为“ Swift Package Manager”,以共享和分发Swift软件包。 最好在我们的开源Swift软件包中添加免费的持续集成,以确保代码更改不会破坏任何内容。 幸运的是,TravisCI为您在Github上的所有开源项目提供免费服务。 在这篇简短的文章中,我们将了解如何为Github上的演示包Greeter添加TravisCI支持。 启用TravisCI 如果您已经拥有GitHub帐户和Swift Package,这将很方便,然后我们可以使用Github凭据注册TravisCI服务。 TravisCI将指导您有关为项目启用CI服务的过程。 这是三步过程,如下图所示 基本上,这很简单,我们需要同步github帐户,该帐户将显示我们的所有存储库。 那么您需要在项目的根目录中添加.travis.yml文件。 并使用git push推送构建 添加TravisCI配置 让我们将.travis.yml添加到上面的Greeter示例包中,内容如下。 操作系统: -osx 语言:通用 sudo:必填 dist:可信赖 osx_image:xcode8 脚本: -快速构建 -快速测试 通知: 电子邮件: on_success:从不 on_failure:更改 Travis具有不同的构建环境,我们必须选择安装了所有必要软件组件的最新xcode 8.3映像。 这意味着我们已经在Travis服务器上快速安装了,然后我们需要运行脚本来构建我们的程序包并测试我们的程序包。 我们已经在上面的.travis.yml文件中完成了此操作。 现在,我们增加了对TravisCI的支持,我们需要在T​​ravis上启用项目,并且它将在每次提交或新的Pull请求之后“构建”和“测试”我们的项目。 我们的Greeter示例的Travis项目示例可以在这里找到 有太多选项可用于自定义.travis.yml文件。 您可以在此处阅读有关配置选项的更多信息 如此简单,希望您也将TravisCI服务添加到您的Swift软件包中。 像XCBlog的 XCTEQ 发布的帖子一样 ? 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 在 Github 上 搜索我们的 服务 ,开源项目, 或者在 […]

使用Travis CI和GitHub进行iOS的持续部署和持续集成

让我们看看如何将GitHub项目与Travis链接。 使用您的GitHub帐户登录Travis网站。 对于私人存储库,您需要注册一个Travis Pro帐户。 登录后,您必须为Travis启用项目。 导航到配置文件页面,其中列出了您的所有GitHub项目。 请注意,以后创建新存储库时,请使用立即同步按钮。 Travis仅偶尔更新列表 现在使用开关启用您的项目。 之后,您应该在GitHub项目设置中看到Travis挂钩。 下一步是告诉Travis一旦收到更改通知该怎么办。 最小的项目配置 Travis CI需要有关您的项目的一些基本信息。 在项目根目录中创建一个名为“ .travis.yml”的文件,其内容如下: 自定义构建命令 Travis从命令行构建您的项目。 因此,第一步是使您的项目在本地编译。 作为Xcode命令行工具的一部分,Apple附带了xcodebuild 。 打开您的终端并输入: xcodebuild —帮助 这应该列出xcodebuild的所有可能参数。 如果失败,请确保正确安装了命令行工具。 这是典型的构建命令的外观: xcodebuild -project {project} .xcodeproj -target {target} -sdk iphonesimulator ONLY_ACTIVE_ARCH = NO 设置“ iphonesimulator” SDK以避免签名问题。 这是必需的,直到我们稍后包含证书为止。 通过设置“ ONLY_ACTIVE_ARCH = NO”,我们确保可以针对模拟器架构进行构建。 您还可以设置其他属性(例如,配置)。 输入 ‘ man xcodebuild’以阅读文档。 对于CocoaPods项目,您必须改为指定工作区和方案: xcodebuild -workspace {workspace} […]

在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

从头开始创建Marvel iOS应用。 Travis,Danger和Fastlane ..

这是一系列文章的第三部分,涵盖了如何使用许多不同的Pod和工具从头开始创建iOS应用,从而使您的生活更轻松。 如果您错过了前面的部分,请检查它们的第一部分和第二部分。 在这篇文章中,我将讨论持续集成Danger和Fastlane。 该项目的源代码可在此存储库中找到。 我为此帖子创建了一个名为v0.3的标签,您 只需克隆存储库并切换到标签v0.3。 持续集成 持续集成(CI)是一门广泛的主题,其中涉及许多教程和书籍,但它是一个相对简单的概念。 在投入生产之前,应尽可能频繁地集成代码以及早发现错误。 如ThoughtsWorks网站中所定义。 “持续集成(CI)是一种开发实践,它要求开发人员每天多次将代码集成到共享存储库中。然后,每个签入都通过自动构建进行验证,从而使团队能够及早发现问题。通过定期集成,您可以快速检测错误,并更轻松地找到它们。” “持续集成不会消除错误,但是确实可以使查找和删除错误变得更加容易。” Martin Fowler 在贝娄,您可以找到有关此主题的更多信息。 持续集成| ThoughtWorks 一家全球软件公司,专注于软件设计和交付。 我们提供专业的服务和产品,以及…… www.thoughtworks.com 基本上,我们必须有一些东西可以监视我们的存储库并运行自动构建。 测试 每次发生任何更改时都将部署过程。 那是CI服务器。 它们有各种形状和尺寸,您可以在这里找到它们的列表。 这篇博客文章将使用Travis,它是一个与github配合得很好的CI,并且是Github上托管的开源项目的主要选择。 特拉维斯 要使用travis,我们首先需要创建一个名为.travis.yml的文件 这就是全部,之后,您可以在每次将新的推送或PR添加到存储库时检查构建。 Travis可以像您期望的那样非常可定制,您可以找到许多不同的配置,它们具有有关此主题的大量文档。 我建议从一个简单的开始,并以此为基础。 同样值得一提的是,您可以看到在travis的脚本阶段中,我们仅调用两件事。 脚本: -快速通道测试 -捆绑执行程序的危险 第一个: -快速通道测试 是我们的自动化管道,是我们在上一篇博客文章中创建的自动化管道。 对于我们的示例,我们仅运行测试并生成覆盖率,但是我们可以做的还很多。 Fastlane可以处理和自动化您的整个管道,测试,构建,部署,生成和上传屏幕截图,发送通知等。 互联网上有许多涵盖所有这些主题的教程,您应该明确检查它们。 重要的是,一旦我们在开发人员机器上掌握了它,在CI中运行它就非常容易。 我们所需要的只是调用Fastlane的车道(例如:例如我们的“测试”),我们一切顺利。 注意事项:首先,请确保您的自动化管道在本地工作,它们带有CI,可以节省您的时间。 第二个: -捆绑执行程序的危险 全部关于代码审查……让我们深入了解它。 危险系统.. Danger是由Orta,Felix Krause和其他出色开发人员创建的令人惊叹的新工具。 危险在CI流程中运行,使团队有机会自动执行常见的代码审查琐事。 这提供了构建中的另一个逻辑步骤,通过此Danger可以帮助减少日常代码检查中的死记硬背任务。 您可以使用“危险”来整理团队规范。 让人们去思考更棘手的问题。 她通过根据您使用Ruby脚本语言创建的规则将消息保留在PR中来实现此目的。 […]

SonarQube“托管在您的服务器上” + Travis CI + Swift

我在本地计算机上安装了SonarQube并成功运行,但目的是将其与Travis CI集成。 要将SonarQube与Travis集成,我有2种选择: 使用SonarCloud。 (文档位于https://docs.travis-ci.com/user/sonarcloud) 使用我的服务器上托管的Sonar。 选择第二个选项-我总是更喜欢服务器上托管的服务。 从SonarSource购买了Developer Edition,网址为https://www.sonarsource.com/plans-and-pricing/developer/ 为什么要使用开发人员版?? 答 :我想要Swift语言支持。 您可以在网络上找到足够的文档来将SonarCloud与Travis CI集成,但是要将其与托管在您自己的服务器上的SonarQube集成并不是一件容易的事。 这就是为什么我想到写这篇文章的原因 .travis.yml设置 我假设您已经知道如何使用您的Github帐户设置Travis。 接下来,您需要告诉Travis如何使用SonarQube对代码进行质量检查。 .travis.yml中的以下代码段将帮助您实现这一目标: 插件: sonarqube:truescript: -声纳扫描仪-D sonar.host.url = $ SONAR_HOST_URL -D sonar.login = $ SONAR_TOKEN -Xenv: 全球: —安全:SecuredSonarToken-SONAR_HOST_URL = SonarHostURL 要生成SonarHostURL的SONAR_TOKEN登录,请转至我的帐户->安全->生成安全令牌。 将生成一个令牌,使用travis encrypt SONAR_TOKEN=token —- add此令牌travis encrypt SONAR_TOKEN=token —- add sonar.projectKey = projectKey sonar.projectName =项目名称 #数字版本(可以在plist中自动找到,只需注释此行) sonar.projectVersion = 1.0 […]