如果你的 CL 导致 Node.js 集成构建失败怎么办

Node.js 使用 V8 稳定版或测试版。为了进一步集成,V8 团队使用 V8 的 主分支 构建 Node,即使用今天的 V8 版本。我们为 Linux 提供了一个集成机器人,而 WindowsMac 正在开发中。

如果 node_ci_linux64_rel 机器人在 V8 提交队列上失败,那么要么是你的 CL 存在问题(修复它),要么是 Node 需要修改。如果 Node 测试失败,请在日志文件中搜索“Not OK”。本文档介绍了如何在本地重现问题,以及如果你的 V8 CL 导致构建失败,如何对 V8 的 Node 分支 进行更改。

源代码 #

按照 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 源代码 #

除非你之前已经这样做,否则请在 GitHub 上 分叉 V8 的 Node.js 存储库(点击分叉按钮)。

将你的分叉库和 V8 的分叉库都添加为现有检查库的远程库

cd node
git remote add v8 http://github.com/v8/node
git remote add <your-user-name> [email protected]:<your-user-name>/node.git
git fetch v8
git checkout 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 'Update Node'
git cl upload