CL が Node.js 統合ビルドを破損した場合の対処方法

Node.js は V8 の安定版またはベータ版を使用しています。追加の統合のために、V8 チームは V8 の メインブランチ(今日以降の V8 バージョンを使用)で Node をビルドします。当社は Linux 用の統合ボットを提供し、WindowsMac は現在進められています。

V8 コミットキューで node_ci_linux64_rel ボットに障害が発生した場合、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 フックを実行してください。

gclient runhooks
JOBS=`nproc` make test

Node.js に変更を行う #

Node.js は node-ci の DEPS 依存関係としても設定されています。V8 の変更によって発生する破損を修正するために Node.js に変更を適用できる可能性があります。V8 は Node.js のフォーク に対してテストします。このフォークに変更を加えるためには GitHub アカウントが必要です。

Node ソースを入手する #

V8 の GitHub 上の Node.js リポジトリを フォーク します([フォーク] ボタンをクリックします)。すでにフォークしている場合は不要です。

フォークと V8 のフォークの両方を既存のチェックアウトのリモートとして追加します。

cd node
git remote add v8 http://github.com/v8/node
git remote add <your-user-name> git@github.com:<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

<同期日> は上流の Node.js との同期日時です。最新の日付を選択してください。

変更を加えてコミットした後、Node.js のチェックアウトを変更します。次に、変更を GitHub にプッシュします。

git push <your-user-name> $BRANCH_NAME

ブランチ node-ci-<同期日> に対してプルリクエストを作成します。

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