我们如何持续交付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部分,然后在该处填写相关信息,例如团队帐户等等。 不要忘了激活网站 。 这将帮助您从任何浏览器查看僵尸程序的运行状况。 您最好添加一些用户以授予权限。

实际上,这是配置机器人的最简单的部分。 其余的将在本地计算机上。 现在让我们使用本地计算机和远程macOS计算机。 使用Xcode打开您的项目,然后转到“首选项” 。 您会在“ 帐户”标签中看到一个加号按钮。 单击后,单击“ 添加服务器” 。 它应该会自动出现在此处,否则,请手动输入服务器的IP,然后单击“下一步”。 填写您的登录信息并添加。 哇,您是blazin快速兄弟!

创建一个机器人

现在,让我们通过Product> Create Bot创建一个机器人。 然后,它将要求您分享一个计划。 不要害怕。 共享方案是您的朋友,只有CI服务(例如Xcode Server)可以使用共享方案。 现在为您的服务器命名。 帮助它到达您的存储库,而无需输入任何密码。 为此,服务器需要SSH密钥 。 然后选择一个分支, 在提交时安排它(暂时)。 由于Xcode向导会在这里为您提供帮助,因此在此不再赘述。 稍后,您可以在此处轻松更改所有信息。

代码签名

在与这里的团队合作的项目中,我们在代码签名问题上遇到了麻烦。 但是我的另一个项目实际上是不受干扰的,并且在第一次尝试时就起作用了。 我从中得到了帮助,这对我有很大帮助。 因此,如果您遇到任何代码签名问题,则意味着您需要一些“ 钥匙串访问色情” 。 因此,请记住上面的很棒的博客文章,牢记Xcode Server在OS上充当了守护进程,这意味着它使用自己的OS用户。

触发Testflight投放

那么,Apple员工可能不喜欢该博客文章中的自动交付和虚拟macOS :)。 但毕竟我是出于教育目的而共享这些内容。

在远程macOS上安装fastlane后,Google会在这里为您提供帮助。 经过漫长而成功的安装过程,现在该学习如何编写触发脚本了。 右键点击您的漫游器,然后点击编辑Bot 。 单击触发器选项卡,然后转到这里。

出口LC_ALL =” en_US.UTF-8”
IPA_DIRECTORY_PATH =” $ {XCS_OUTPUT_DIR} / ExportedProduct /”
cd $ IPA_DIRECTORY_PATH
使用FASTLANE飞行员将IPA发送到TESTFLIGHT
/ usr / local / bin / pilot上载-u

上面的shell脚本可帮助您先进入导出目录,然后在此处启动Fastlane。 Fastlane的试验分支将负责将您的IPA文件发送到Apple服务器。 但是不要忘记提供开发人员密码作为环境变量(key = FASTLANE_PASSWORD,value = PASSWORD)。

您甚至可以在构建后立即发送电子邮件。 太神奇了。

因此,从现在开始深入研究机器人并在下面分享您的想法评论。 谢谢。