再配線可能なビルドを行うには、Jenkins用にDocker integrationをお勧めします。これにより、複数のビルドを同時に処理することができるため、ビルドに予想以上の時間がかかる場合は、他の開発者も同様にプッシュできます。
各コンテナには独自のネットワークがあるため、同じポートでリスニングしているノードサーバーを持つコンテナで同時にコンテナを実行できます。コンテナの外部からノードサーバーにアクセスする必要がないかぎり(たとえば、ビルドサーバー自体から)、問題はありません。
PostgreSQLデータベースの場合、コンテナ内にデータベースサーバを起動することができます。これは、短命のDBサーバがたくさんあることを意味します。インポートする必要のあるテストデータの量によっては、これは解決策ではない可能性があります。もう1つの方法は、ビルドサーバ上でPostgreSQLサーバを実行し、コンテナがそのサーバにアクセスできるようにすることです。各ビルドでは、おそらくテンプレートを使ってPostgreSQLで新しいデータベースを作成します。その後、dbを破壊することができます。
ので、プロセスは次のとおりです。
[Developer pushes] -> [git notifies Jenkins] -> [Jenkins creates database] -> [Jenkins runs container] -> [Container builds and tests] -> [Container processes results] -> [Jenkins destroys database]
ステップをproceesing結果については、それを行うには、複数の方法があります。最も簡単な方法(追加のソフトウェアは必要ありません)は、Jenkinsにブランチを自動的にマージさせることです。各開発者は作業のために新しいブランチをプッシュし、テストが成功すると、Jenkinsはそのブランチをマスターにマージします。これを強制するために、ユーザが直接マスターブランチに書き込むことを禁止することができます。
もう1つの方法は、gitホスティングソリューションにJenkinsを統合することです(使用している場合)。 GitLab EE supports thisこれは、GitLabの各コミットのテスト結果を見ることができることを意味します。もちろん、これはGitLab/Bitbucket/...のようなものを使用しないと解決策ではありません。