Tag: 持续集成

即将发布的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开发挑战” […]

SonarQube与iOS的集成

什么是SonarQube? SonarQube是SonarSource开发的开放源代码平台,用于连续检查代码质量,以对代码进行静态分析来执行自动检查,以检测20多种编程语言中的错误,代码气味和安全漏洞。 声纳斯威夫特 Backelite开发的Swift插件帮助人们将Sonar集成到Swift项目中。 它涵盖以下几点。 代码覆盖率:这是Sonarqube中可用的度量之一,它描述了在运行自动测试时执行了多少行代码。 Sonar-Swift将为您提供已执行的代码块,并允许您深入数据并确切查看在特定测试期间执行和未执行的代码行。 在项目中设置代码覆盖率设置有助于保持代码的可维护性和易更改性,并且拥有涵盖大多数或全部应用程序的测试套件意味着您将拥有更高的安全性,以确保某些产品不会在生产中崩溃。 可维护性:声纳可维护性是代码气味的数量加上根据一组预定义规则(基于您使用的Lint)在代码中所欠的技术负担。 Sonar为每个部分提供了简单的评分,使您可以快速查看所分析的应用程序的性能。 可靠性:可靠性等同于正确性,发现和修复的错误数量,应用程序在交付中的一致性以及对代码例程已知结果的信心 安全性:关于安全性,Sonar涵盖了可以在项目中找到的漏洞数量。 几分钟即可显示解决所有漏洞问题的工作。 为Swift设置Sonar 步骤1.下载并设置SonarQube 1.下载SonarQube:https://www.sonarqube.org/downloads/ 2.解压缩下载的文件。 3.将下载的文件移到/ Applications /文件夹下。 4.将其重命名为SonarQube并删除版本后缀。 第2步。下载并设置SonarScanner 1.下载SonarScanner:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner并单击Mac OS X 64位。 下载Mac OS X专用的SonarScanner 2.解压缩下载的文件。 3.将下载的文件移到/ Applications /文件夹下。 4.将其重命名为SonarScanner并删除版本后缀。 步骤3.使用新路径更新.bash_profile 1.启动终端并运行以下命令。 $ cd〜/ $ vi .bash_profile 2.上面的命令将在vi编辑器中打开您的bash_profile 。 3.使用向下箭头键跳至最后一行。 4.使用左右箭头导航到最后一个字符。 5.按i启用插入模式。 6.复制并粘贴以下行。 #声纳设置 导出PATH = $ PATH:/ Applications / SonarScanner […]

Xcode Server + Ansible:可扩展和可编程的iOS CI / CD基础结构

原始文章:原始文章已发布在我的个人博客XCBlog上,继续阅读 此处 以获得更好的图形。 要阅读有关iOS DevOps和iOS CI / CD的更多有趣文章,请 在此处 访问我的博客 。 关于Xcode Server的抱怨之一是它不能扩展用作大型或企业级。 但是,如果您具有理解和管理用于iOS部署的基础结构的技能,则可以使用iOS和DevOps工具包的混合为中小型或大型iOS团队轻松实现可伸缩性。 过去,在我之前在Photobox Group工作时,我们使用工具Ansible + Fastlane + TeamCity的组合实现了这一目标。 您可以在此处阅读我在Moonpig Engineering博客上的博客文章,以了解我们如何实现这一目标。 在这篇文章中,我们将看到学习Ansible和Apple的CI解决方案Xcode Server之类的DevOps工具如何可以轻松地管理大规模的iOS CI / CD基础架构。 与iOS相比,iOS开发的持续集成实践并不理想,因为iOS开发有一些独特的挑战。 必须了解整个iOS生态系统才能为团队设置和管理CI / CD基础结构。 一些高级/高级iOS开发人员或iOS技术架构师/主管非常了解Apple开发人员工具,技术和基础架构的全部堆栈,并在其项目中实施,但是目前业内大多数iOS开发人员只是iOS开发人员,他们擅长编写Swift或Objective-C为Xcode内部的应用程序构建UI。 但是,在了解基础架构时,它们确实很烂。 他们没有正确理解Xcode在幕后使用的底层工具和技术,这就是为什么他们完全无法设置或管理iOS应用程序的CI / CD做法。 因此,他们始终必须依赖本地Xcode或DevOps团队的人员来管理所有基础架构堆栈,否则CI / CD将由昂贵的第三方服务来处理。 这意味着开发人员不是完整的堆栈,也不了解他们自己的工具和技术。 不幸的是,iOS开发的世界充满了这类业余爱好者和烦恼的开发人员。 没有团队中的熟练工程师,持续集成将不会成功。 在我以前的文章中,我写到了CI失败的5大原因。 这些是错误选择的CI服务器,CI Amature工程师,缺少作为代码的基础架构,质量差的构建服务器以及团队缺乏支持。 除了iOS工程师无法理解整个iOS生态系统之外,iOS生态系统的自动化还存在一些传统挑战。 其中一些是由苹果专有软件强加的,而其他则是由于缺乏自动化iOS和macOS基础架构的工具。 一些常见的挑战是 缺少可用于自动执行基础结构的配置管理工具。 Chef,Ansible和Puppet不适用于macOS服务器。 缺少用于配置和自动安装软件的官方软件包管理系统。 我们必须使用第三方解决方案,例如HomeBrew 缺乏官方的依赖管理工具。 我们必须使用迦太基或Cocoapods来管理依赖关系。 Swift […]

2018年:iOS版本和CI / CD流程的年度最大变化。 如何为2019做准备

原始链接: 2018年:iOS版本和CI / CD流程的年度最大变化。 如何为2019做准备 在2018年,Mobile DevOps和CI / CD世界被一些重要的公告和新闻所动摇。 这些公告是… shashikantjagtap.net 2018年:iOS版本和CI / CD流程的年度最大变化。 如何为2019年做准备– XCTEQ 在2018年,Mobile DevOps和CI / CD世界被一些重要的公告和新闻所动摇。 这些公告是… www.xcteq.co.uk 在2018年,Mobile DevOps和CI / CD世界被一些重要的公告和新闻所动摇。 这些公告来自Apple或开源社区,但是这些公告肯定会改变传统的iOS应用CI / CD制作方式。 在本文中,我们将回顾2018年,展望2019年。我们将看到2018年iOS应用程序的Mobile DevOps和Continuous Delivery中发生了哪些变化,以及它将如何影响iOS中的iOS版本和CI / CD流程。 2019。 在2018年的元旦,苹果收购了BuddyBuild,Mobile DevOps中的情况发生了巨大变化。 BuddyBuild是针对移动应用程序的出色云CI / CD服务之一。 自从BuddyBuild成为Apple的一部分以来,他们就停止了对Android应用程序的支持。 也停止了为iOS应用吸引新客户。 这对于使用Android和iOS的BuddyBuild服务的公司来说,是一个巨大的震惊。 这些公司需要为Android应用程序寻找另一项CI / CD服务,这将导致昂贵的迁移工作。 对于使用基于云的CI / CD服务的公司来说,这也是一个重要的教训,这使他们思考是内部管理移动基础架构还是将其外包给其他公司。 我们在这里介绍了内部管理移动DevOps基础架构的利弊。 苹果与BuddyBuild的合并也使Xcode Serve的未来成为问题。 对于目前使用Xcode Server的公司来说,这也是一个警钟。 寻找适用于Android和iOS的通用跨平台移动CI […]

我们如何持续交付iOS版本

我们是B2B公司的移动团队,每周为海外的iOS版本提供服务。 位于土耳其硅谷:METU Technopolis。 由于我们将敏捷设置为软件开发方法这一事实,因此我们在开发过程中实际上应该保持敏捷 。 我们试图做的是一个免费的,自托管的,完全自动化且易于使用的,针对Objective-C代码库的构建机器人。 配料 有效的付费开发者帐户 在真实或虚拟机上运行的macOS。 Xcode Server(从开发人员门户免费下载) Xcode 7.1.3 Gitlab(或github或bitbucket) Testflight(您应该知道现在是什么) Fastlane-飞行员 基本的Shell脚本编写背景 食谱 当我第一次在第一家公司的墙上看到“使所有事物自动化”的模因时,我不知所措。 在编写软件时,我们不是要自动化一些东西吗? 从哲学上讲,软件之路的尽头就是一切的自动化。 我读了蒂姆·费里斯的《每周四小时》。 那是开始。 我学会了shell脚本或bash脚本,无论您如何称呼它都是为了使事情完成而不是亲自完成。 好吧,我不想用我的情感回忆向您发送垃圾邮件,让我们深入了解一些iOS自动化。 首先,我阅读了太多的教程,尤其是关于这个,这个和这个。 一切都很好,但是我需要一个简单的描述f的东西。 我们在这里吗 ? 我遇到了很多障碍,但我尽了全力。 现在,自动化就像魅力一样。 基本上,我们需要一台专用的macOS计算机,该计算机从存储库中克隆您的代码库并进行构建。 它可以定期,在commit或手动 上构建您的代码。 我们用全部。 稍后再说。 macOS虚拟机还是专用的Mac mini? 当然,您可以将本地macOS用作构建服务器,但不建议这样做,因为好人不会关闭服务器 。 我们要求IT部门为我们提供专用的linux计算机,以便在其上设置macOS VM。 他们做到了。 我首先在上面安装了macOS El Capitan VM ,然后安装了Xcode服务器。 Xcode Server非常易于研究,我什至不提如何设置。 只需启动Xcode部分,然后在该处填写相关信息,例如团队帐户等等。 不要忘了激活网站 。 这将帮助您从任何浏览器查看僵尸程序的运行状况。 您最好添加一些用户以授予权限。 […]

Codesigndoc v2可在Bitrise上与Xcode 9完美协作

您友好的iOS Code Signing Doctor获得了 Codesigndoc 的新版本, 具有新功能和修复功能,使其可以与Xcode 9的代码签名完美结合。 😎 Codesigndoc可帮助您从计算机收集所有必需的代码签名文件( Codesign Identities和Provisioning Profiles ),以在Bitrise上成功签名Xcode / Xamarin项目。 该工具的v1版本使用了以下事实:如果使用xcodebuild / msbuild构建工具运行Xcode / Xamarin存档,则所用的代码签名文件将由构建工具记录。 Codesigndoc刚刚调用了特定于项目的build命令来存档您的项目,并解析该命令的输出以确定要收集的文件。 使用这些代码签名文件,您可以在Bitrise上存档您的项目。 为了能够收集所需的代码签名文件以将生成的存档导出到.ipafile,codesigndoc也已收集 您的钥匙串中与档案库开发团队匹配的所有代码签名身份 提供您的项目目标的捆绑软件ID的所有供应配置文件。 该解决方案有一些缺点: Xcode的新构建系统不会记录使用的代码签名文件(这很糟糕,是吗?)。 您可能需要使用其他团队来导出存档。 如果您的钥匙串包含所需的Codesign Identity的重新制作版本,则两个版本都打包到证书(.p12)文件中。 由于仅根据您的项目目标的捆绑软件ID收集了“供应配置文件”,因此即使“配置文件”不包含您项目的所有功能,它也可能已经收集了具有与您的项目匹配的捆绑软件ID的配置文件。 v2如何运作? 我们试图更新Codesigndoc使其工作与使用Xcode 9导出.ipa文件时类似。 要分发项目,您需要完成两个任务: 归档项目 将生成的存档导出到.ipa文件 新的Codesigndoc中的第一个任务没有更改:它仍然调用特定于平台的构建工具的build命令来存档您的项目。 但是,它不分析命令日志,而是分析生成的存档文件。 关于代码签名,档案看起来如何? 如果您的项目包含多个应用目标(主应用,监视应用,应用扩展以及监视应用扩展),则归档文件如下所示: code-sign-test.xcarchive ├── Info.plist └── Products └── Applications └── code-sign-test.app ├── Info.plist ├── archived-expanded-entitlements.xcent […]

所以我想部署一个二进制文件

你不可以过去! 到目前为止的故事 最初,宇宙是被创造出来的。 这使很多人非常生气,被普遍认为是一个坏举动……开玩笑! 这一切都是从最近开始的。 确切地说,在星期四晚上6:42 pm。 我有一些带宽,因此决定解决我团队长期以来遇到的麻烦 -使用CircleCI环境进行手动部署。 直到星期四晚上,我们对于使用(请参阅:构建和维护)不同的工具或利用完全独立的服务来达成最终目标的想法不尽相同。 理想情况下,我们应该能够利用CircleCI API并以此方式触发作业。 不幸的是,截至撰写本文时, 如果您正在使用CircleCI 2.1和Workflows ,则目前无法 (通过API) 触发单个作业 。 但是,我们手头有一个更简单的解决方案,这对我们来说是未知的。 工作流程 根据CircleCI的文档,为了通过更快的反馈,更短的重新运行和更有效的资源利用来提高软件开发的速度,我们应该配置工作流 。 我们已经使用了它们,它们为我们服务很好。 但是有一个我们不知道的配置密钥- type: approval 。 围绕它的文档措辞混乱,难以理解。 但是经过几次重读后,我到达了那里。 批准书 在CircleCI工作流下为工作分配 approval类型时,“工作”在config.yml必须是唯一的。 例如,如果您定义了三个主要作业: 建立 测试 部署 每个都在您的工作流程中运行,那么手动触发器必须命名为上述以外的名称。 还必须仅在您的工作流中定义它。 此外,为了使手动触发器真正起作用 , 必须依赖于它的另一个后续工作。 我将触发器命名为deploy-branch 。 只有在打开CircleCI Web UI并手动启动它时,才会运行此程序。 换句话说,当一个人给予批准时 。 结果 一旦我继续进行工作,并调整了工作流程以包括type: approval为roval的工作,我们便有了一个真正的手动触发器。 它没有精美的界面,例如Github标签或Slackbot命令,但是它确实做到了上面所说的。 结论 作为行业和专业的iOS开发人员,我在摆放我们的CI环境的同时,真正地走出了自己的舒适区。 […]

亚搏体育app CI iOS

GitLab CI非常易于使用,作为一个单独的开发人员,您不再需要构建Jenkins服务器,因此GitLab CI就是为您准备的。 让我们看一下我将要介绍的项目,以及GitLab CI如何帮助我们。 今天的演示项目是BowlingGame,其中包含单元测试和UI测试,CI部分我们使用xcodebuild进行测试,xcsummary用于XCtest报告生成,并使用fastlane进行testflight上传,因此您需要在开始之前安装xcodebuild和fastlane。 第1部分设置fastlane和.yml: 初始化Fastlane:按照Fastlane的说明,可以指导您完成信息,包括app_identifier,apple_id,itc_team_id,team_id…等,也可以在路径/ yourProject / fastlane / Appfile中进行检查。 设置Fastfile:我们只使用upload_to_testflight函数,因此请确保方案正确 desc“将新的Beta版本推送到TestFlight” 车道:beta do build_app(方案:“ TDD-BowlingGame”) upload_to_testflight 结束 3.设置.yml文件:此文件告诉GitLab CI做什么,应该完成哪些步骤。 阶段: -CreateDirectory -UIAndUnitTesting -生成报告 -ArchiveAndUploadToItuneConnectvariables: LC_ALL:“ en_US.UTF-8” LANG:“ en_US.UTF-8”创建: 阶段:CreateDirectory 脚本: -rm -rf〜/ Myproject / -mkdir〜/ Myproject / Test: 阶段:UIAndUnitTesting 脚本: #将iPhoneX_iOS1131更改为您的真实设备名称 -rm -rf / Users / i_HankTseng / Library / Developer […]

Xcode Bots:使用Swift Package Manager构建项目

Xcode Bots当前不支持Swift Package Manager项目。 但是可以将它们构建为macOS应用程序,甚至可以获取IDE中显示的代码覆盖率报告。 如果还没有为Swift Package Manager创建一个新的Xcode项目(请注意:不要检查版本控制中的项目文件,因为这对SPM项目来说是不好的做法): 迅捷包generate-xcodeproj 将以下设置应用于您的Bot配置。 (您甚至可以检查“分析”操作) 选择匹配的测试设备。 添加预集成脚本以快速创建项目文件,这是使用所有Xcode Bot功能和下载所有依赖项所必需的。 #/ bin / bashcd mia-cli 快速构建 迅捷包generate-xcodeproj cp -r xcschemes mia-cli.xcodeproj / xcshareddata / 交易 快速生成Xcode项目文件意味着所有Scheme和用户首选项都将丢失。 但是您可以将* .xcscheme目录从项目文件中复制(以* .xcproject结尾)到存储库中的另一个位置,并将其检入版本控制中(如果对方案进行更改,则必须再次执行此操作) )。 生成Xcode项目时,您可以将目录再次复制回您的项目文件中。 瞧!

Xcode Bots:为Linux构建命令行应用程序

苹果通过Xcode 9引入了XCS Bots,它使iOS开发人员能够以最小的努力在内置CI系统中维护其构建。 目前,XCS仅在Mac系统上运行,这意味着-应用只能针对Apple生态系统iOS,macOS,watchOS和tvOS的平台进行编译。 但是由于Swift是开源的,并且可以在Ubuntu等Linux发行版上运行,因此XCS缺乏为此类平台编译库和命令行应用程序的可能性。 Docker进行了救援。 Docker提供了强大的界面,可根据您的特定需求虚拟化您的构建基础架构。 Docker有点像虚拟机,但是它没有创建整个虚拟机,而是使用主机操作系统的内核,从而显着提高了性能并减小了映像的大小。 为了使用Xcode Bots构建应用程序,要在Linux发行版上运行,您首先必须创建一个具有Swift Toolchain功能的Linux映像。 如果您的目标系统上没有安装docker(= XCS的运行位置),请下载并安装Docker Desktop App。 下载适用于macOS的Docker Docker使用Dockerfile构建具有所有必需依赖项的映像。 幸运的是,Docker Hub已经提供了一个。 前往Docker Hub获取官方的Swift Dockerfile。 确保选择使用最低必需Swift版本的Dockerfile。 将其保存到您的SPM项目目录。 假设您已经配置了用于构建项目的Bot,请使用以下代码行添加一个新的post脚本。 如果您未创建一个,则可以按照本教程进行操作。 / usr / local / bin / docker build \ –no-cache \ -t swift:ubuntu \ -f路径/到/ Dockerfile“ $ {XCS_SOURCE_DIR} / your-git-folder-name” 生成映像后,现在就可以运行它,并提供您在上一个命令中创建的标签。 此外,在虚拟Docker容器中挂载主机系统的两个目录。 一个目录包含您的SPM项目,另一个目录包含您的项目的linux编译版本。 (注意:您必须使用绝对路径来挂载目录)。 将以下代码添加到Bot的发布脚本中。 / usr / […]