Tag: Bitrise

iOS用于iOS开发的分支模型。 与Bitrise持续集成

当我开始在目前的公司工作时,我们为iOS平台准备的设置完全在本地托管:用于回购的Bitbucket Server ,作为构建平台的Jenkins和用于分发的Hockeyapp自己实现(据我了解,从Hockeyapp是一个开源项目的过去)。 所有这些都由外部机构(开发我们的应用的机构)负责。 我被分配的首要任务之一是这些服务的内部化,以便变得独立并控制开发周期。 为了托管存储库,我们将使用Bitbucket Cloud和Hockeyapp进行分发,但是由于我们公司根本不托管任何服务器(我们的基础架构主要在AWS的保护下运行),因此不能选择照旧执行Jenkins实施。 我当时在寻找新的云CI / CD平台 。 iOS云连续集成服务器奥运是一个很好的起点。 由于我们不是在开发仅限iOS的应用,因此未考虑buddybuild。 经过研究后,两个最终入围者是CircleCI和Bitrise 。 初始步骤 我最初的选择是CircleCI,但即使我遵循了一些教程,但也无法使签名生效。 它可能比Bitrise提供更多的自定义功能,但是对于一个不知道他在做什么的人来说,像Bitrise那样拥有一个构建模块界面在这样的早期阶段是关键 。 客户服务部门也迅速回答了我的问题,这也是迁移到Bitrise的另一个原因。 在链接了所有步骤(基本上使用了Bitrise推荐的模板)之后,构建平台就可以正常工作了。 局限性 我们有三个主要工作流程:暂存,候选发布和分发。 暂存和发行候选人将在我们的develop分支中建立,而发行将在master建立。 当几个主要功能准备好以更成熟的状态集成在一起,从而触发候选发布版本时,将应用相同的方法。 从beta到release将会执行手动合并,从而生成一个新的候选版本的应用程序。 此发行候选版本可能会被发送到iTunes Connect 。 如果最终测试和审核过程令人满意,则将发布该应用程序,并进行从release到master release的手动合并, 包括带有版本号的标签 。 理想情况下 , master 分支将包含在AppStore中发布的所有应用程序版本,并带有正确标记 。 ➜git checkout主 ➜git tag v.1.2#举例 ➜git push-标签 所有不同版本都会生成两个.ipa文件,一个针对我们的暂存后端,另一个针对我们的实时服务。 为了使我们(和我们的测试人员)更容易知道哪个版本针对什么,我们分配了不同的应用程序图标,包括版本名称和后端环境: 这些应用程序已上载到HockeyApp,我们的测试人员团队可以在其中查看和下载它们。 这就是我们当前的设置。 谢谢阅读! ✌️

使用Bitrise上的构建缓存在构建之间传递工件

可以 在 Bitrise 上 使用 Cache:Push 和 Cache:Pull 步骤在 构件之间传递工件 ,如果要使用一个 构件 在 另一个构件中 生成的文件,这非常方便。 例如,在第一个构建中,您可以存档您的iOS项目并从xcarchive导出Development ipa文件,然后可以由测试人员进行测试。 测试人员完成后,无需再次存档项目,但是可以使用xcarchive (由第一个版本生成)来导出一个ipa文件供App Store分发并将其部署到App Store。 让我们看看如何做到这一点: 1,使用iOS项目的存储库在Bitrise上创建一个新项目。 Bitrise将对其进行扫描,并将生成包含primary工作流程和deploy工作流程的初始配置。 您需要使用配置为能够导出到Development和App Store类型的ipa文件的iOS应用。 此外,该项目需要已经部署(至少一次)到iTunesConnect,以便能够使用Bitrise自动进行后续部署。 format_version: ‘4’ default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: ios trigger_map: – push_branch: “*” workflow: primary – pull_request_source_branch: “*” workflow: primary workflows: deploy: steps: – activate-ssh-key@3.1.1: run_if: ‘{{getenv “SSH_RSA_PRIVATE_KEY” | ne “”}}’ […]

在iPad上编码? 当然可以!

独立软件开发人员Anders Borum的客座博客帖子,对使用平板电脑和手机进行编程非常感兴趣。 自2014年以来,他一直在制作iOS的Git客户端Working Copy。 您要在iPad上编码吗? 想知道为什么iOS本身无法运行iOS应用程序的开发工具? 您在旅途中手指是否渴望进行编程? Anders Borum创建了 工作副本 来应对这些挑战。 我使用Bitrise的原因并不常见:持续集成的构建服务器的价值随团队规模的增加而增加,但我一个人工作,在本地运行测试对于我的小型设置非常有效。 但是,我将展示如何使用Bitrise也可以在iOS设备上进行iOS开发,这意味着您可以在iPad上开发应用程序。 我将通过您正在使用的应用程序指导您。 我正在开发一款小型游戏,训练在触摸屏键盘上打字,以期提高速度并降低错误率。 游戏还试图解决程序员之间长达十年的争论,而您必须站在一边: 制表符或空格 。 我们来看一下: 游戏尚未完成,还有很多事情需要解决:我想关注启动屏幕的底部。 另外,在等待用户在选项卡或空格键之间进行选择时也没有移动,我希望“星系间的安全性”动画到位,并且我想出一种老式效果。 我会继续努力。 🙂 该游戏是需要Xcode构建的本地iOS应用程序。 我大多数时候都带着iPad,但没有普通计算机,因此也没有Xcode。 我的iPad确实有Swift Playgrounds,这是一个编程环境,专注于在编写代码时立即显示结果。 我在Swift Playgrounds内部制作了打字动画的原型,并且生成的代码易于集成到Xcode项目中。 视频中显示的游乐场显示一个视图控制器,并制作了我的自定义作家效果标签的两个实例。 您可以看到如何在产生这些值的代码表达式的右侧显示数字,字符串和颜色。 这使Swift Playgrounds成为尝试新想法的非常不错的工具。 如果我要展示编写者效果的编程方式,那将是一段令人难以置信的视频,尤其是因为我多年没有使用CADisplayLink并不得不研究文档。 视频显示了我对标签的颜色进行了调整。 从Swift Playground到Xcode项目转移工作时,我只需要label类本身,这就是为什么您看到我复制一些文件的原因。 如果以后要继续在Swift Playgrounds中工作,我会将AnimatedLabel保留在其自己的文件中。 现在,我需要一台运行Xcode的计算机来构建应用程序。 幸运的是,Bitrise只需将其推送到Git遥控器即可提供此功能。 因此,我开始构建,几分钟后,Bitrise通过电子邮件发送了结果,称结果失败。 几分钟后,Bitrise通过电子邮件告知结果,结果表明构建失败。 😒 该电子邮件包含指向状态页面的链接,其中包括构建日志。 在Safari中打开它并调用共享表,我可以使用“ Open in Working Copy将日志发送回应用程序。 在工作副本中查看日志时,它需要与正确的存储库关联,并且日志中提到的任何文件名都将链接到源代码。 Bitrise日志中提到了文件名和行号以及错误,因此我可以直接进行修复。 推送提交以触发Bitrise上的新构建。 第二次是魅力,在成功构建之后,Bitrise向我发送了一个链接以安装新版本。 Bitrise向我发送了状态电子邮件,就像上次构建时所做的一样,但是由于一切正常,因此第二封电子邮件包含用于安装该应用程序的链接,该电子邮件更为相关。 […]

Bitrise上的Whitelabel应用

使用相同的代码库创建几个不同的应用程序,并在Bitrise上自动化其构建,测试和部署。 自由软件开发人员 Felipe Oliveira 分享了他在Bitrise上处理whitelabel应用程序的经验,他过去使用Bitrise成功地实现了以下两种方法。 通过这种方法,大约可以生成30个应用程序。 即使需要维护很多应用程序,它仍然是可管理的。 在此工作流程中,我们具有用于构建多个不同iOS目标 的相同项目 。 每个目标都有自己的Info.plist,图标和图像,但是所有对象的主要代码都相同。 每个目标都有一个Bitrise应用程序 。 工作流程设置了一些环境变量,例如目标名称,目标应用程序ID和iTunes凭据。 之后,我们从存储库中运行常见步骤。 所有目标的bitrise.yml文件都是相同的,并且这些步骤使用环境变量来构建应用程序并将其提交到商店。 也有 我们用于处理内部版本号的Web服务 。 我们有一个脚本步骤,调用我们的服务,发送目标ID,并接收我们注入目标Info.plist文件中的版本号。 这使我们可以从服务器单独控制每个Target的版本。 还有一个重要步骤: 签名和证书。 我们使用“ Bitrise Certificate Install步骤安装分发证书,但不安装配置文件。 我们的每个目标都有一个主要的iOS应用,一个Watch应用和一个Notification Extension,这意味着我们需要为每个目标维护6个配置文件。 我没有将它们全部6个上传到每个Bitrise应用程序中,而是将它们全部压缩并添加到存储库中。 我们有一个脚本步骤,用于解压缩该文件并复制/安装构建当前目标所需的文件。 这是我们的工作流程: – Set environment variables for the target; – Run the Bitrise.yml from the repo; – Get Build Version Number from the servers; – […]