返回博客首页
← 所有文章

让 NativeScript 与 BuddyBuild 协同工作

2017年3月2日 — 作者:Todd Anglin

当您开始与团队合作进行移动项目时,通常希望拥有一个共享的构建服务器来帮助创建持续交付工作流。此构建服务器在每次将新的提交(或我们过去称之为“签入”)推送到您的项目时重新编译您的应用程序,甚至可以在新(工作)构建可用时通知测试人员和 Beta 用户。有许多方法可以为持续交付设置构建服务器,但与当今涉及服务器的所有事物一样,云能否做到这一点?如果有人为您管理构建服务器,那不是很好吗?

进入 BuddyBuild。一个用于构建 Android 和 iOS 应用程序的基于云的服务。酷。

我看到一些人尝试将其与 NativeScript 一起使用,所以我必须尝试一下。入门非常简单

  1. 使用来自 GitHub、GitLab 或类似服务的现有 ID 登录
  2. 选择包含您希望 BuddyBuild 编译的项目的仓库
  3. 观看 BuddyBuild 下载您的项目,查找 iOS 或 Android 应用程序,然后创建构建

编译后的应用程序可以下载并在本地设备上运行,或者您可以使用 BuddyBuild 将您的应用程序分发给 Beta 测试人员(类似于 Telerik 的 AppManager 和 Microsoft 的 HockeyApp 中的功能,这两者也都适用于 NativeScript)。

buddybuild

使 NativeScript 构建工作

BuddyBuild 还没有(尚未)开箱即用地支持 NativeScript 项目(如果您想要此功能,请告知他们!),但他们确实提供了一个灵活的系统,允许您自定义构建过程。每个构建都会获得自己的全新服务器实例,这意味着您可以控制相当多的权限来根据需要配置该环境以使您的构建工作。

您可以运行 shell 脚本以修改构建环境的三个主要点

  1. 克隆后(BB 完成导入项目的最新副本后)
  2. 构建前(您的实际移动应用程序构建开始之前)
  3. 构建后(您可以弄清楚)

为了使 NativeScript 构建工作,我们需要 BuddyBuild 在执行本机应用程序构建之前执行两个额外的步骤

  1. 安装 NativeScript CLI
  2. 为我们的 NativeScript 应用程序项目准备本机构建

我们将通过向我们的 NativeScript 项目添加一个“克隆后”BuddyBuild 步骤来实现这一点,该步骤从 npm 安装 CLI 并运行tns prepare命令以生成我们的 XCode 或 Gradle 平台项目文件。

在项目的根目录(您的源项目,而不是app目录)中,创建一个名为buddybuild_postclone.sh的新文件。BuddyBuild 会查找具有此名称的文件并在正确的时间运行其内容。在该文件中,包含以下 shell 脚本

#!/usr/bin/env bash

# Install NativeScript CLI
echo "******** Install NativeScript CLI *************"
npm install -g nativescript

# NativeScript Ready
echo "******** NativeScript CLI Ready *************"
tns --version

# Prepare NativeScript Project
echo "******** Prepare NativeScript iOS Project *************"
tns prepare ios

显然,此代码段被设置为适用于 iOS 应用程序构建。如果您想支持 iOS 和 Android 构建,则可以使用 BuddyBuild 环境变量 创建更高级的脚本。

注意:BuddyBuild 需要在其系统中为 iOS 和 Android 构建相同的应用程序创建单独的“项目”,因此您可以在这两个项目中设置特定的环境变量以构建 iOS 和 Android 的 NativeScript 源代码。

此脚本中包含echo注释以帮助进行调试。您可以在 BuddyBuild(“日志”)中获取所有构建的完整命令行输出,因此这些注释将帮助您查看各种克隆后操作在哪里执行。

nativescript cli and buddybuild

使用此脚本,BuddyBuild 应该构建您的 NativeScript 项目并为您提供一个应用程序包,您可以将其部署到您的测试人员或 Beta 用户!

master build

问题

如果就这么简单,那它就不是移动应用程序开发了。

在我的实验中,我发现此解决方案适用于 NativeScript“Hello World”示例和相对简单的应用程序。对于具有大量插件(尤其是本机 iOS 插件)的应用程序,您的里程可能会有所不同。我测试的一个大型 iOS 应用程序仅在某些情况下才能在 BuddyBuild 上编译,即使编译成功,安装到设备上后也无法工作。

所以……它并不完美。但希望 BuddyBuild 团队能够在为其系统添加对 NativeScript 的一流支持时帮助解决这些问题。

在此之前,它是一个非常酷的用于 iOS 和 Android 应用程序的持续集成构建服务器解决方案,并且只需很少的配置,它可能适用于您的 NativeScript 应用程序。