跳过主要内容
PR 预览

在真实手机上预览每个 pull 请求

您的 CI 将每个 pull 请求的 web 构建上传到其自己的 Capgo 频道。审阅者扫描一个 QR code 或切换频道在应用程序中尝试它,并且频道在 PR 关闭时删除。native code 的更改仍然需要一个新的构建。

来自马丁的人性化支持

  • 每个 pull 请求一个频道
  • QR code 预览
  • 关闭 PR 时清理

问题

web变化不应需要新的二进制文件进行审查

使用测试构建进行PR审查

  1. 开发者打开PR

    更改已准备就绪,但尚未在手机上进行测试。

  2. 构建、签名和上传

    某人为分支构建一个原生二进制文件,签名它,上传到TestFlight或Play测试跟踪中,并等待处理。

  3. 邀请和安装

    审查者需要添加为测试者并安装该exact构建。

  4. 重复每个修复

    每个审查评论都改变code意味着另一个构建,另一个上传,另一个安装。

每轮审查都等待原生构建,即使只有JavaScript发生变化。

团队的成本

每个构建

等待商店处理

每次你上传到测试飞行或Play测试轨道的构建都会被处理,测试者才能安装它。这会发生在每个构建上。

每个PR

需要自己的原生构建来测试

没有实时更新,审阅者只能在有人构建、签名并上传新的二进制文件后尝试一个 branch,甚至是web-only的更改。

延迟反馈

审阅发生在作者已经转移任务后

当审阅等待构建时,反馈会晚到,作者正在处理另一个任务,branch会从main分支漂移。

它是如何工作的

How teams preview pull requests with Capgo

四个CI步骤:设置一次scoped密钥,按推送上传,分享预览,关闭时清除。以下每个命令都来自Capgo文档。

  1. 创建App预览密钥并启用预览

    管理员为CI创建了一个App预览API密钥。它可以创建预览频道和上传捆绑包,但无法更改默认或生产频道。预览在每个应用程序中只打开一次。

    # once, run by an admin (not the preview key)
    npx @capgo/cli@latest app set com.example.app --preview
    App预览API密钥
  2. 上传PR构建到自己的频道

    每次推送时,CI会构建Web应用并以唯一的捆绑包版本上传。bundle upload --channel创建了pr-<number>频道,如果不存在,则将捆绑包链接到它。

    npx @capgo/cli@latest bundle upload com.example.app \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --path ./dist \
      --channel "pr-$PR_NUMBER" \
      --bundle "1.2.3-pr.$PR_NUMBER.$GITHUB_RUN_NUMBER"
    PR预览在频道文档中
  3. 在PR中发布预览

    get-qr打印了频道的QRcode,或使用--url参数打印预览URL,以便CI可以将它们添加到PR评论中。

    npx @capgo/cli@latest get-qr com.example.app \
      --channel "pr-$PR_NUMBER" \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --url
    get-qr参考
  4. 关闭PR时删除频道

    在pull请求关闭事件中运行此命令。使用App预览密钥,它只会删除创建的频道和链接的捆绑包。

    npx @capgo/cli@latest channel delete \
      "pr-$PR_NUMBER" com.example.app \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --delete-bundle \
      --success-if-not-found
    频道CLI参考

其他方式的审阅者切换到PR频道

两者都需要一个允许自我分配的频道。 App Preview密钥不会设置此项,因此使用该密钥时,请共享二维码预览或在控制台中设置设备覆盖

摇动菜单

在内部构建中打开摇动菜单。测试人员摇动设备以打开Capgo的测试菜单,摇动频道选择器让他们选择频道。

// capacitor.config.ts (internal builds)
CapacitorUpdater: {
  shakeMenu: true,
}

在-app switcher

在开发者设置屏幕上添加一个频道字段,并使用PR频道名称调用setChannel()。

import { CapacitorUpdater } from '@capgo/capacitor-updater'

await CapacitorUpdater.setChannel({
  channel: 'pr-123',
  triggerAutoUpdate: true,
})
setChannel()参考

使用PR预览

任何查看pull请求的人都可以在手机上查看它,不仅仅是作者。

QA工程师

  • 在自己的设备上测试PR的web构建
  • 在不重新安装应用程序的情况下切换PR频道
  • 频道名称与PR号码匹配,因此您知道您正在运行哪个code

项目经理

  • 在手机上尝试一个功能之前就合并
  • 扫描PR上发布的QR code
  • 在PR上留下反馈

开发者

  • 在PR仍然开放时获取设备反馈
  • 每次推送都会更新PR频道
  • 对于仅有JavaScript的更改,不需要原生构建

Store testing builds vs Capgo PR channels

  • 将PR部署到手机

    测试Flight / Play测试
    原生构建、签名和商店处理
    Capgo PR频道
    CI构建和打包上传
  • 切换PR

    测试Flight/Play测试
    安装另一个构建
    Capgo PR频道
    扫描另一个QR code 或切换频道
  • 审阅者设置

    测试Flight/Play测试
    邀请测试者,然后安装每个构建
    Capgo PR频道
    安装应用程序一次
  • 原生 code 和插件更改

    测试/试玩
    是
    Capgo PR频道
    否,需要原生构建

使用Capacitor构建的应用

产品应用需要可审阅的移动更改

学习、活动和社区应用可以在同一时间进行审阅的登录、练习、直播和订阅更改。PR预览允许产品、QA和支持人员在合并之前检查一个已准备的移动构建。

StudySmarter - 学校 &amp; 大学应用图标 教育

StudySmarter - 学习与校园

教育应用程序,需要利益相关者审查的课程、课程和订阅变更。

Google Play 安装
6.5万
商店评分
4.8
Poll Everywhere 应用程序图标 企业

Poll Everywhere

在合并之前,应测试事件流程的实时参与应用程序。

Google Play 安装
1.1万
应用商店评分
3.2
lichess • 免费在线国际象棋应用图标 游戏板

lichess • 免费在线国际象棋

社区应用,比赛和分析屏幕都能从设备预览中受益。

Google Play 安装
11.3万
应用商店评分
4.3

客户证明

使用Capgo的团队在说什么

5.0/5 开发者团队评级 9,400+ 团队 查看评论

纳特范约尔

CTO, 私有

“设置只需一天。基于频道的发布让我在自己的设备上测试之前任何内容都不会发布到生产用户身上。”

迈克尔哈伯勒

迈克尔哈伯勒

nethead emeritors

“更新插件使用得很好。它对我来说运行得非常顺畅,实时更新大大提高了快速测试的效率。”

无调性 @ Webincode

开发者, Webincode

&ldquo;能够将设备 ID 添加到某些组并将更改推送到仅限某些组的设备是救命的.&rdquo;

常见问题

关于 PR 预览的团队常问的问题

为设置 CI 和审查的人提供直率的答案

审查者需要为每个 PR 获取一个新的构建吗?

不需要,如果 PR 只改变了 web 层。审查者只需安装一次应用程序,每个 PR 的 JavaScript、HTML、CSS 和资产都可以在自己的频道中。 如果 PR 添加了一个插件或改变了原生 code, 需要一个原生构建。 在 CI 中运行构建以检测此类情况。

什么需要原生构建

CI 密钥是否可以触及我们的生产频道?

不使用 App 预览 API 键。它可以创建预览频道、上传捆绑包并删除它创建的频道和捆绑包。它不能更改默认或主频道。在 GitHub 动作中,运行在 pull_request 上的作业,而不是 pull_request_target,并将其限制为来自同一存储库的 PR。

App 预览 API 键

评审者如何打开预览?

管理员使用 app set --preview 一次启用预览。然后,get-qr 打印 PR 频道的 QR code,并 --url 打印 Web 预览 URL 和深度链接。将它们发布在 PR 评论中。

get-qr 参考

旧的 PR 频道和捆绑包会发生什么?

在 pull_request_closed 事件上添加一个作业,运行 channel delete,使用 --delete-bundle 和 --success-if-not-found。使用 App 预览键,会删除频道和与其关联的捆绑包。使用 bundle cleanup,使用具有删除权限的键,可以删除早期推送的捆绑包。

频道 CLI 参考

是否支持 GitLab、Bitbucket 或 Azure DevOps?

是。步骤是 Capgo CLI 命令,因此它们在任何 CI 中都可以运行。文档中有 GitHub Actions、GitLab CI、Bitbucket Pipelines 和 Azure DevOps 的集成指南。

CI/CD 集成

在手机上预览下一个 pull 请求

在 CI 中添加上传、QR 和清理步骤,并在免费试用期间尝试它们。

来自马丁的专业支持

14 天免费试用,无需信用卡。原生更改仍需要新构建。