2016-12-16 8 views
4

私のWebサーバーアプリケーションの1つにContinuous Integrationを実行したい。 Postgresをバックエンドデータベースとして使用しています。これを実現するために、NodeJS/JenkinsとGITを使用する予定です。WebサーバーとしてNodeJS/Jenkins/GITとJenkins Slave

開発者が変更をチェックインしたら、すぐにビルドを開始して基本的なテストを行う必要があります。 これには、NodeJSサーバーの起動といくつかのテストケースの実行が含まれます。

私はgitの変更が通知されるたびにJenkinsのビルドが開始されるように、JenkinsとGITを統合しました。

NodeJS Webサーバーを同じJenkinsマシンで実行できますか?これに対してスレーブWindowsマシンを使用する必要がありますか?

ベストプラクティスをお勧めしますか?

サーバマシンにPostgres DBがインストールされ、NPMもインストールされていることを前提としています。

ありがとうございました。

答えて

3

再配線可能なビルドを行うには、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/...のようなものを使用しないと解決策ではありません。

関連する問題