3

私は、分散システムを構成する一連の状態完全サービスを持っています。それぞれにDockerファイルがあり、Dockerファイルを作成してユニットテストを実行できます。私は彼らが互いに分散してやり取りする方法を調べる必要があります。テストを実行するには、次のようにする必要があります。分散システム用のJenkinsやその他のオープンソースCIはありますか?

  • 複数のDockerファイルを1回のテスト実行と見なされる異なるノードで同時に実行できること。
  • 各Dockerファイルのコマンド実行順にバリアを設定できるようにする。言い換えれば、すべてのDockerファイルを同時に実行すると、すべてのファイルがXのステージを開始する前に、ステージYを完了していることを確認する必要があります。
  • ノードの障害で停止することができます。

このような操作のためのJenkinsプラグイン/エクステンションがありますか、またはこのような問題を解決する可能性のあるシステムやアプローチはありますか?

答えて

0

CloudBeesの(ジェンキンスの背後にあるチーム)ジェンキンス2にドッカーサポートに多くの労力を置く:私の意見でhttps://jenkins.io/doc/pipeline/steps/docker-workflow/

はまだ少し未熟ですが、それは良い方向への一歩です。

私はgitlab-ci(https://about.gitlab.com/gitlab-ci/)が好ましいです。非常に使いやすく安定した堅牢性を備えています。残念ながら私にはタイトなバージョン管理システムの統合(Gitlab-CIを使用したい場合はコードをGitLabに入れる必要があります)はショーストッパーです(Githubに自分のコードを保存しておく必要があります)。

また、あなたは、いくつかのSaaSを考慮することができる製品は、IE:これは、箱から出してサポートされています

https://travis-ci.org/ https://buddybuild.com/

1

使用gitlabとオートスケールとgitlab-CIは、へのドライバでDocker Machineを使用していますautoscale runners Gitlab-CIを参照してください必要に応じて、デジタル海洋でも自動的にリソースを配備します。

そして、あなたは.gitlab-ci.ymlでビルドやテストについて説明します。さまざまな段階を定義

  • 、(....、TEST1を構築)
  • すべてのビルド場所/段あたりのテストを次のステージに移動する前に終了する必要があります
  • とステージごとにすべてが並行して実行されます。

私のシンプルドッカーパイプラインhereを参照してください。

備考1:機密性が問題になる場合は、あなたが

  • することができます。 gitlabでプライベートリポジトリを作成します。
  • b。独自のサーバー上のホストgitlab *

備考2:コードはどこか別の場所にホストされている(例えば、gitub)、コミットするたびにgitlabにプッシュしてビルドパイプラインを開始することができます。

セットアップに、このようなプロジェクトを専門的に必要になる場合、あなたは私に連絡することができますが、それは

0

あなたは常にbashやPowerShellのスクリプトを書くことができているジェンキンス/この質問の範囲を逸脱するもので答えるでしょうこれを行うために実行することができます。

0

まず、統合テストをDockerビルドステップの外に移動します。ユニットテストはまだそこで実行できますが、テストコードがビルドされたイメージの中にどれだけ含まれているかを最小限に抑えるために、コンテナの外で別々に行うことをお勧めします。

マルチコンテナ統合テストでは、docker buildではなくdocker runの後に実行する必要があります。これにより、各コンテナにDNS接続の名前を付けることができ、各テストの実行順序を制御できます。各テストをdocker-compose.ymlとして保存し、結果を処理することもできます。

イメージビルドから分離したテストでは、テストをJenkinsパイプラインのステップとして追加して、パーツを並行して実行し、各ステージが完了するのを待ってから続行することができます。

関連する問題