背景:ローカルの Mac OS X マシンでいくつかの Node.js マイクロサービスを開発しています。私たちの開発環境は、コードがマップされて実行される Vagrant/Docker 環境です。
特定のマイクロサービスについて、 ghooks (devDependency) とArron2-ffi (依存関係)の2 つの異なる依存関係を利用しています。
- ghooksはnode-gypを使用して、ローカル マシン (Mac OS X) でバインディングを作成します。
- Argon2-ffiはnode-gypを使用して、Docker コンテナー (Ubuntu) 内にバインディングを作成します。
npm install
orがどこで実行されているかによって問題が発生しnpm rebuild
ます。ローカルの開発マシンで 1 つを実行すると、Argon2 のバインドにより、サービスが Docker コンテナーで実行されなくなります。docker コンテナーで 1 つを実行すると、バインディングが開発マシンに対して正しくないため、すべての Git コマンドが失敗します。
問題を悪化させるために、構成した ghook は、マージ時に package.json ファイルへの変更を探し、自動的に を実行しnpm install
ます。(これは、私たちが持っている十数個のマイクロサービスすべてでの動作であり、この動作を維持しようとしています。)
Docker コンテナーに SSH で接続し、マージ時に再構築するフックを追加するなど、いくつかのことを試しましたが、Vagrant マシンが起動していないか、エラー状態にある場合に問題が発生します。アルゴン 2 用に node-gyp が作成する Linux バイナリを Git にチェックインしようとしましたが、ローカルの開発環境と AWS へのビルド プロセスの両方で Docker コンテナーの外部で実行される自動化されたテストがありますが、そうでないため失敗します。コンテナ内を走る。
特定の依存関係が node-gyp でどのように構築されるかを管理する方法はありますか? 私たちが思いもよらなかった別の戦略はありますか?