首页
/
工具
/
通过启动来审查拉取请求
通过启动来审查拉取请求
摘要
trynix-preview 是一个 GitHub Action,允许审查员在浏览器中直接启动拉取请求的构建以进行测试和反馈,使用 Nix 和 Cachix 而无需服务器或克隆。
<p><a href="https://lobste.rs/s/7lii0g/review_pull_request_by_booting_it">评论</a></p>
查看缓存全文
缓存时间:
2026/09/10 02:13
# 通过启动方式审查拉取请求
来源:https://fzakaria.com/2026/09/09/review-a-pull-request-by-booting-it
> **简而言之;** trynix-preview(https://github.com/marketplace/actions/trynix-preview)是一个 GitHub Action,它会在拉取请求中评论一个链接,让您能够通过 https://trynix.dev/ 在浏览器中启动该 PR 的构建结果。无需服务器,仅需浏览器。
我在之前的 trynix 文章(https://fzakaria.com/2026/09/04/any-nix-package-live-in-your-browser)末尾列出了一些想法,这些是基于我们现在能够于浏览器中启动任意 `/nix/store` 路径而认为可以实现的。其中最明显的用途就是让审查者在浏览器中启动一个拉取请求的构建版本,以便进行测试、验证和反馈。
这已成为现实。🤯
千言万语不如一个演示:这是一个针对我的 sqlelf(https://github.com/fzakaria/sqlelf)项目的拉取请求(PR#31(https://github.com/fzakaria/sqlelf/pull/31)),它来自一个分支,并且上面有我们的 Action 留下的评论:
[![一条来自 github-actions[bot] 的 GitHub 拉取请求评论。它链接了 "在您的浏览器中启动此构建",说明一个 Linux 虚拟机在标签页中启动,并从缓存中获取此拉取请求的构建结果,注明了它是从哪个提交构建的,并且有一个折叠的 "Store paths" 部分。](https://fzakaria.com/assets/images/derived/trynix-action-pr-comment-1404w.png)](https://fzakaria.com/assets/images/trynix-action-pr-comment.png)
点击该链接(https://trynix.dev/?path=/nix/store/x0cz8aax3pcn0byrm1vjyidd17aizk6i-sqlelf&cache=https://sqlelf.cachix.org+sqlelf.cachix.org-1:MLnjolA9AsKscTOJKDSA%2BZAcgIK8BwZA574j4%2BCs2bg%3D),您的标签页中将启动一个 Linux 机器,其 `PATH` 中已包含该 PR 的 `sqlelf`。
您无需克隆任何内容,也无需构建任何内容。无需服务器、无需 SSH、无需 VPN、无需 Docker、无需虚拟机、无需云服务。仅需一个浏览器和一个链接。😈
## §(https://fzakaria.com/2026/09/09/review-a-pull-request-by-booting-it#gimme-gimme-gimme)给我。给我。给我。
与任何 GitHub Action 一样,只需在您的工作流中添加几行配置。
*但前提是您必须已经构建并缓存了该路径,这样 Action 才能链接到它。该 Action 不会构建或缓存任何内容。*
```
# 将 Cachix 设置为我们的 Nix 缓存。
- uses: cachix/cachix-action@v17
with:
name: sqlelf
authToken: $
# 我们构建拉取请求的代码并将其推送到缓存,以便 Action 可以链接到它。
- run: nix build .#default
- uses: fzakaria/trynix@v1
with:
cache: https://sqlelf.cachix.org
publicKey: sqlelf.cachix.org-1:MLnjolA9AsKscTOJKDSA+ZAcgIK8BwZA574j4+Cs2bg=
# 如果您想启动多个路径,可以指定多个 attrs。
attrs: .#default
```
该 Action 既不发布也不构建任何内容。您缓存中已有的内容继续存在,该 Action 的全部工作就是简单地通过 `nix eval` 提供 store 路径,并将缓存的 URL 和公钥交给浏览器。
它不特定于某个 Nix 缓存提供商,但我确实推荐使用 Cachix(https://cachix.org/),因为它对开源项目免费提供最多 5GiB 的空间。11 您绝对应该注册 Cachix,但即使没有它也可以测试此功能,因为免费层非常慷慨。
您可以查看我的 trynix.yaml(https://github.com/fzakaria/sqlelf/blob/b6546b0dbcbc6ff4d8f07f820ee563a0dcab6fcd/.github/workflows/trynix.yaml)工作流以获取完整示例。您必须在 `actions/checkout` 步骤中设置 `allow-unsafe-pr-checkout: true`,因为该工作流运行在分支的拉取请求上,这具有安全影响。22 我建议为拉取请求构建使用一个私有隔离的缓存,这样分支就无法推送到您的主缓存中。
如果这不合您的意,还有一个版本:由维护者在拉取请求中输入 `/trynix` 来触发工作流。
无论哪种情况,工作流都在默认分支上运行并检出拉取请求的代码,因此分支无法编辑构建它的流程。
## §(https://fzakaria.com/2026/09/09/review-a-pull-request-by-booting-it#game-over)游戏结束?
我是否通过让审查者轻松启动一个 PR 而颠覆了所有 CI 产品?
不幸的是,并没有。🥲
大型二进制文件的性能相当糟糕。即使我通过 AI 辅助对引擎进行了许多改进,大型二进制文件仍可能需要 1-2 分钟才能执行。33 我在网站上添加了一个基准测试页面 https://trynix.dev/bench/,其中包含了关于各种应用程序启动和运行时间的丰富数据。
尽管如此,这仍然是一个相当出色的工作流,并展示了 Nix 的强大功能。
也许随着我们接近通用人工智能,我们的 AI 主人能够将引擎优化到在几秒钟内执行大型二进制文件,但就目前而言,该 Action 最适合中小型二进制文件。
相似文章
Simon Willison's Blog
文章介绍了 trynix,一个基于 WebAssembly 的工具,可在浏览器中运行过去13年内的任何 Nix 包,并重点介绍了一个 GitHub Action,用于交互式地启动拉取请求。
Lobsters Hottest
trynix.dev is a browser-based runner that boots a Linux VM in WebAssembly to let users execute any historical Nix package instantly without local installation. It can pull binaries from the public Nix cache, Cachix, or any CORS-enabled store, enabling over 310,000 nixpkgs versions to run directly in a browser tab.
Lobsters Hottest
一位开发者描述了他使用git命令(如range-diff和log -p)来审查pull requests的工作流程,以规避基于Web的UI的缺陷。
Lobsters Hottest
GitHub 现已推出堆叠式拉取请求的公开预览,允许开发者将大型变更拆分为更小、更易审查的 PR,这些 PR 可独立审查并一键合并。
Hacker News Top
Codiff 是一款轻量级本地 diff 查看器,用于审查 Git 暂存和未暂存的更改,支持基于 LLM 的逐步讲解和内联审查评论。