3

私たちはJenkinsからConcourse CIに移行するプロセスの途中にあり、これまでのところすべてがかなり滑らかでした。しかし、今私は解決する方法がわからないという問題があります。私はコミュニティからアドバイスを受けたいと思います。コンコースCI - 機能テストの実行方法

私がしようとしていることは、Seleniumを使用して統合テストまたは機能テスト(web)を実行できるジョブです。いくつかの問題は、私たちのためにあります。

  1. は、私は、データベースを設定する必要がウェブテスト(および必要に応じて、検索エンジン、プロキシおよび等...)が可能で、近くに本番環境を模倣するためのプロキシを実行します。 理想的には、ドッカーの設定で設定する必要があります。
  2. このデータベース・サービスは、それが唯一のデータベースと他には何も
  3. を開始しますので、私のウェブテストがされるまでに開始すべきではない、このデータベース・サービスは何でも、どちらもエラーや成功を返すべきではない私のテスト
  4. の並列で実行する必要がありますデータベースが
  5. 準備ができているあなたが見ることができるように、すべてのWebテストが

を終えたときに、このデータベースサービスを停止しなければならない、それはかなり非自明なタスクです。もちろん、私は必要なものすべてを含んだ大きなユーバーコンテナを作ることができますが、これは悪い解決策です。もう1つの選択肢は、そのためのシェルスクリプトを作成することですが、これは十分な柔軟性がありません。

この問題のために、そのやり方をどのように実装することができる例がありますか?

ありがとうございます!バージョンは1.3.0以来

答えて

3

あなたがタスクにドッカーが、構成を実行することができます表示されます。https://concourseci.slack.com/archives/general/p1466556331001964

これは動作するように表示されます:それは私にはその複雑な音はありません

jobs: 
    - name: docker-compose 
    public: true 
    serial: true 
    plan: 
     - do: 
     - task: docker-compose 
      timeout: 20m 
      privileged: true 
      config: 
      platform: linux 
      image_resource: 
       type: docker-image 
       source: {repository: "mumoshu/dcind", tag: "latest"} 
      run: 
       path: sh 
       args: 
       - -exc 
       - | 
        source /docker-lib.sh 
        start_docker 
        docker ps 
        docker-compose version 
+0

は面白いですね、ありがとう –

+0

私はあなたの提案を試み、それは動作します。タスクコードが少し不器用に見えるかもしれませんが、今はユニットテストより複雑なテストを実行できます。乾杯! –

0

。私は類似のものを手に入れて実行する方法についての投稿を書いたhere。私はスタックとテストランナーのためにいくつかの異なる容器を使用し、公式のドッカーからすべてを起動します。ドッカーで作成されたドッカーイメージがインストールされています...

CIを取り込む通常のコンテナを超えてリソースを取り出す 試運転は以下のようになります。

  1. ドッカーでウェブ、休憩、およびその他のサービスを開始します。
  2. 残りのレイヤと通信する ウェブページ上でTestrunnerサービスを起動し、テストスイートを起動します。これは応答のために他のサービスに依存します( )。
  3. テストランナーが完了するとdocker-composeを実行し、 テストスイートのリターンコードに基づいて、 タスクの戻りコードを決定します(0 =失敗、1 =成功)。

きれいにセットアップして、以下、(テストの開始時に、あなたのサービスが開始されていない場合は多分あなたは私のために、dependsを使用することができ、それはせずに動作します)

ような何かを行うことができ、スタックおよびテストランナーを切断するには
# Setup the SUT stack: 
docker-compose up -d 
‌‌ 
# Run the test-runner container outside of the SUT to be able to teardown the SUT when testing is completed: 
docker-compose run --rm test-runner --entrypoint '/entrypoint.sh /protractor/project/conf-dev.js --baseUrl=http://web:9000/dist/ --suite=my_suite' 
‌‌ 
# Store the return-code from the tests and teardown: 
rc=$? 
docker-compose down 
echo "exit code = $rc " 
kill %1 
exit $rc 
+0

コメントありがとうございます!はい、私はあなたのソリューションに似た何かで終わってしまいました。ここにスライドとリンクがあります:https://speakerdeck.com/w32blaster/introduction-to-concourseci –

0

これは、コンコースの著者からのコメントです:

何ドッカーバイナリまたはソケットがホスト上にありません - 彼らはちょうど庭のバックエンド(おそらくガーディアン)を実行しています。 ConcourseはDockerの上にある抽象レイヤー上で動作しますので、そこにどんな種類の魔法を提供することは実際には意味がありません。

1.3以降で欠落していることは、Dockerがcgroupsを自分で設定する必要があることです。私はそれがいかに迷惑であるか忘れてしまった。私は彼らがGuardianがやっていることをして自動構成することを望みますが、何ができるのでしょうか。

ので、命令のフルセットは、次のとおりです。

使用やビルドそれでドッキングウィンドウ、例えばと画像ドッカー:dind。 タスクの開始時に次のコマンドを実行します。https://github.com/concourse/docker-image-resource/blob/master/assets/common.sh#L1-L40 ドッカーデーモンを持つDockerをスピンアップ&。

これで、ドッカーの作成と友だちは通常どおりに実行できます。

これの欠点は、毎回イメージを取得することです。 #230はそれに対処します。

長期的には、#324(コメント)は私が行きたい方向です。

受け入れ答えのように、ここでhttps://github.com/concourse/concourse/issues/324

を参照してください、スラックアーカイブデータは、(原因スラック限界まで)に削除され

ドッキングウィンドウの画像は、ユースケースに特化:https://github.com/meAmidos/dcind

関連する問題