如果您的 CL 导致 Node.js 集成构建失败,该怎么做
Node.js 使用 V8 的稳定版或测试版。为了额外的集成,V8 团队使用 V8 的主分支构建 Node,也就是使用今天的 V8 版本。我们为Linux提供了集成机器人,而Windows和Mac仍在开发中。
如果 V8 提交队列中的node_ci_linux64_rel
机器人失败,要么您的 CL 确实存在问题(需要修复),要么需要修改Node。如果 Node 测试失败,在日志文件中搜索“Not OK”。本文档描述了如何在本地复现问题以及如何对V8 的 Node 分支进行修改,如果您的 V8 CL 导致构建失败的话。
源代码
按照 node-ci 仓库中的说明检出源代码。
测试对 V8 的修改
V8 被设置为 node-ci 的一个 DEPS 依赖项。您可能需要为测试或重现故障对 V8 进行更改。为此,请将您的主要 V8 检出添加为远程:
cd v8
git remote add v8 <your-v8-dir>/.git
git fetch v8
git checkout v8/<your-branch>
cd ..
记得在编译之前运行 gclient hooks。
gclient runhooks
JOBS=`nproc` make test
修改 Node.js
Node.js 也被设置为 node-ci 的 DEPS
依赖项。您可能需要修改 Node.js,以修复 V8 更改可能导致的中断。V8 对Node.js 的一个分支进行测试。您需要一个 GitHub 账号来修改该分支。
获取 Node 源代码
Fork V8 的 Node.js GitHub 仓库(点击 fork 按钮),除非您之前已经 Fork 过。
将您的分支和 V8 的分支都作为远程添加到现有检出中:
cd node
git remote add v8 http://github.com/v8/node
git remote add <your-user-name> [git@github.com](mailto:git@github.com):<your-user-name>/node.git
git fetch v8
git checkout v8/node-ci-<sync-date>
export BRANCH_NAME=`date +"%Y-%m-%d"`_fix_name
git checkout -b $BRANCH_NAME
注意
<sync-date>
是我们与上游 Node.js 同步的日期。选择最新的日期。
对 Node.js 检出进行修改,并提交更改。然后将更改推送到 GitHub:
git push <your-user-name> $BRANCH_NAME
并在 node-ci-<sync-date>
分支上创建一个拉取请求。
一旦拉取请求被合并到 V8 的 Node.js 分支,您需要更新 node-ci 的 DEPS
文件,并创建一个 CL。
git checkout -b update-deps
gclient setdep --var=node_revision=<merged-commit-hash>
git add DEPS
git commit -m '更新 Node'
git cl upload