Tag: 哈德逊jenkins

iOS的持续集成-艰难的道路

我们的iOS团队注意到,我们的大部分时间都浪费在了构建和分发项目上。 构建和分发的任务非常适合于自动化,因此我们决定对此做一些事情。 这就是故事。 我们的更大项目之一是着重于旅行的社交媒体应用,其中新功能和错误修复正在不断实施。 它的代码库总共包含约350.000行代码: 55%是斯威夫特 其中40%是Objective-C 剩下的5%使用C,C ++,Ruby或Shell脚本 在具有8 GB RAM的Macbook Pro Retina 2016上,该应用程序的构建和分发时间平均约为30分钟,而在较旧的Mac Mini上,则约为40分钟。 如果它不在我们用于开发的机器上运行,或者如果我们想在Macbook上煮一个煎蛋,那将是可以接受的。 关于持续集成和持续交付(CI / CD),存在许多选择。 这些是我们考虑过的: 1.詹金斯 优点: 我们的后端和质量检查团队已经在使用它 文档内容丰富 很多社区的支持 经过“实战测试” 缺点: 用户界面相当……令人困惑 有很多术语 它对开发人员不友好 某些问题很难调试 2.特拉维斯 优点: 易于使用 免费提供开源软件 缺点: 仅支持Github(在我们使用Bitbucket时不适合使用入门工具) 3.比特币: 优点: 面向移动 有据可查 易于配置和使用 缺点: 有价位 还包括Nevercode,CircleCI,Github Actions和Bitbucket工作流。 最后,我们已经选择了Jenkins,因为我们已经让开发人员非常熟悉它。 至于测试设备,事实证明,旧的Mac Mini和Macbook Air非常适合(后来用于生产)。

使用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版本。 内部测试人员结束了故事。

使用iOS项目从Jenkins Jobs提取测试结果

文件,文件,文件。 文档是大型项目中的工件,以确保符合软件开发生命周期(SDLC)。 实际上,所需的文件之一就是单元测试报告。 在这里,我将带您进行2分钟的简短导览,以设置您的詹金(Jenkin)工作,以便生成测试结果报告。 如果您不知道如何为您的项目设置詹金斯工作,则可以在这里查看我的上一篇文章。 我们将使用Jenkins的插件调用Test Results Analyzer。 这给了我们4种漂亮的测试结果可视化效果: 表 线 馅饼 酒吧 转到->配置 。 转到构建后操作 。 选择添加构建后操作->发布JUnit测试结果报告。 输入test-reports / *。xml并忽略其余字段。 (包括红色消息) 现在,触发一个构建以运行该作业,等待它执行所有测试用例,现在您可以从根文件夹中检索.xml文件。 您还将在作业的主页上看到一个新图像。 轻按一下“ 测试结果分析器”即可立即显示可视化效果! 虽然这可能不是我们可以生成的最理想的测试结果报告,但是它为我们提供了足够的基本信息,可以为利益相关者提供简要概述执行哪种测试用例的情况(假设我们已经以TDD和BDD方式很好地命名了测试用例) )。

使用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参考。 […]

运行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应用商店中安装。 […]

与Jenkins,Xcode和GitHub的基本持续集成

在上一篇文章中,我论证了为什么单元测试和代码审查很有价值。 在这一篇中,我将向您展示如何建立一个自动化系统来执行这些原则。 在允许PR合并之前,我们将要求有人对其进行审查,并且所有单元测试都已通过。 开发人员在提交PR之前不应该运行单元测试吗? 是的,但是拥有护栏并没有什么可耻的。 专家通常会忘记一两个细节。 看看医院开始允许护士对医生实施检查清单时发生了什么。 2001年,约翰·霍普金斯医院的重症监护专家Peter Pronovost决定尝试[检查清单]……他和他的团队说服医院管理部门授权护士在发现医生跳过检查清单的步骤时停止医生治疗…… Pronovost和他的同事们监视了一年后发生的事情。 结果是如此惊人,以至于他们不确定是否要相信: 十天的线感染率从11%降至零。 因此,他们又跟踪患者十五个月。 在整个时期内仅发生了两次线感染。 他们计算出,在这家医院中, 清单已预防了43次感染和8例死亡,并节省了200万美元的成本 。 https://www.newyorker.com/magazine/2007/12/10/the-checklist 由于可能会出现错误,为什么不解释这些错误呢? 我们可以告诉计算机强制执行我们自己设计的清单。 有3个主要部分可实现这一目标: 设置Jenkins以构建和测试iOS应用 获取GitHub以加入Jenkins以触发构建并报告测试结果 配置GitHub阻止PR,直到所有检查通过 您将需要Jenkins在Mac上运行。 如果您不能这样做,请立即保释。 👋 Jenkins有大量的插件可以使您的生活更轻松。 我们想要的是: GitHub,GitHub API,GitHub身份验证和GitHub Pull Request Builder —与GitHub交互 JUnit —报告单元测试结果 Xcode集成-帮助我们构建iOS应用 要安装插件,请转到主页->管理Jenkins->管理插件。 然后检查“可用/已安装”选项卡。 您可能已经安装了其中一些! 首先,让我们构建我们的应用程序。 进行Freestyle作业,然后输入您的回购URL和凭据并指定您的主分支: 接下来,浏览至Xcode部分,并将其放入常规设置。 该插件的作用是在您的项目中运行xcodebuild ,并使其易于配置参数。 现在转到Advanced Xcode build options-> Advanced build settings 看到“目的地”参数了吗? 这指向您要测试的特定设备。 […]

使用Jenkins的IOS的CI / CD(使用Jenkins生成.ipa)

Jenkins是许多组织使用的持续集成和持续部署工具。 Jenkins的最重要因素是构建自动化。 就像移动应用程序开发一样,您可以自动构建,测试和部署应用程序到相关的应用商店,还可以通过以下方式设置构建执行:如果有开发人员提交代码,Jenkins将构建->测试->部署应用程序(理想情况下,您应该将条件放在部署上,例如,如果所有测试用例都成功执行,则只能部署)。 在本文中,我将介绍如何使用Jenkins制作ipa文件。 1)使用默认插件下载并安装Jenkins 2)移至Jenkins(http:// localhost:8080)并选择: Manage Jenkins 3)点击: 管理插件 4)单击“ 可用”选项卡,搜索Xcode并安装它 1)移至仪表板,然后单击左侧的“ 新建项目 ”。 2)输入任何名称,然后选择Freestyle Project。 3)现在,这是您需要遵循的最重要的步骤。 在此步骤中,您需要提供有关代码存储库的所有信息,构建流程命令(在此,因为我们使用的是Xcode插件,所以不会),选择配置并设置路径。 在这里,我使用的是Git,因此我需要通过选择git选项来提及存储库URL。 如果您的存储库是私有的,则还需要设置凭据(有关更多信息,请参见此信息。) 移至Build并单击Add build step按钮并选择Xcode选项,它将添加Xcode相关字段。 在常规构建设置中,单击设置按钮,然后准确填写以下字段。 I)选择打包应用程序,构建并签名.ipa? 选项。 II) 配置: .app的导出方法以生成.ipa文件。 应该是“开发”,“临时”,“企业”或“应用商店”中的一个。 III) .ipa文件名模式 :ipa文件名的模式。 您可以在此字符串中使用$ {VERSION}和$ {BUILD_DATE}(yyyy.MM.dd)。 现在,在进入“代码签名和OS X钥匙串选项”部分之前,您需要根据Jenkins Global配置创建开发团队 ,然后执行以下操作。 I)移至Jenkins信息中心>管理Jenkins> 配置系统 II)转到Xcode构建器部分,然后单击前面的Apple Development Teams字段中的Add按钮,它将为您提供两个字段,因此请填写VALID Team Name和Development Team ID III) 添加钥匙串并填写钥匙串名称和钥匙串密码的有效值(钥匙串路径已经存在) IV)申请并保存 理想情况下,您首先应该只获取git […]

如何在Jenkin环境下获取iOS的详细unit testing用例执行日志

当通过命令行运行Xcodeunit testing用例时,我可以看到下面的日志。 命令: xcodebuild -project MyStore2.xcodeproj -scheme MyStore2 -configuration Debug -sdk iphonesimulator7.0 clean test 日志: Test Case '-[MyStore2Tests testIsTrue]' started. Test Case '-[MyStore2Tests testIsTrue]' passed (0.000 seconds). Test Suite 'MyStore2Tests' finished at 2014-07-14 13:01:58 +0000. Executed 2 tests, with 1 failure (0 unexpected) in 0.000 (0.000) seconds Test Suite 'MyStore2Tests.xctest' finished at 2014-07-14 13:01:58 +0000. […]

Xcode 7.3.1 UITests代码覆盖率始终为0%

除了主应用程序之外,我的项目中还有两个unit testing和UItesting目标。 这两个目标有单独的scheme,以便我可以分别在我的CI服务器上运行它们。 我在这两个scheme中检查“收集代码覆盖率”。 最初我通过使用“Cmd + U”分别构build和运行这两个scheme,并确保所有这些scheme都正确显示覆盖率数据,从而确保XCode中的所有内容都能正常工作。 在我的Jenkins CI中,我使用fastlane为这两个scheme分开工作,unit testingscheme工作正常并生成报告。 但是UItesting计划总是显示0%的覆盖率报告。 我不知道什么是做错了。 某处我阅读UItesting依赖于unit testing为了代码覆盖,是真的吗? 如果这是真的,那么我应该运行unit testing在执行UItesting之前? 提前致谢。

iOS应用程序版本和iTunesConnect TestFlight的内部版本号

我的问题涉及iTunes Connect for Version和Build号码中的限制。 我们只允许3个非负整数,并且Build编号必须是递增的。 我正在设置一个Jenkins作业,自动将我的版本上传到iTunes Connect,以便testing人员可以下载它们。 问题:我们如何确保增量构build号码? 即使我们在每次提交之前手动在Xcode中进行更改(这似乎是错误的),但是有多个开发人员在项目中工作,所以我们不可能在整个团队中同步我们的提交和增量编号。 很高兴:我的团队在多个分支机构工作。 如果我可以在“生成”字段中指定分支名称或其他描述,将会很有帮助。 在独立testing飞行(2015年2月底将弃用)中,我们可以上传一些信件。 会喜欢这里的一些input! 而且,如果iTunes Connect Test Flight不是分发testing版本的答案,那么人们还在使用其他服务? 谢谢!