ドキュメント
circleci.com
Start Building for Free

同時実行

2 weeks ago1 min read
クラウド
Server 3
Server 2
On This Page

ここでは同時実行について概説し、活用する方法を紹介します。

CircleCI では、同時実行とは複数のコンテナを使用して、複数のビルドを同時に実行することを指します。 これは、複数のコンテナにテストを分割する 並列実行とは異なります。 並列実行については、 テストの並列実行 のページをご覧ください。

CircleCI のすべてのプランにジョブの同時実行機能が含まれています。 しかし、同時に実行できるジョブの数はプランによって異なります。 お客様のプランに含まれる同時実行が可能なジョブの数に関する最新情報は、 料金プランのページ を参照してください。

同時実行

CircleCI では、ジョブの同時実行は下記の 2 つの状況に分られます。

  • 1 つのワークフロー内に設定された複数の実行ジョブ

  • 組織内の複数のメンバーが実行する複数のワークフロー

ここでは 1 つ目の状況について説明し、1 つのワークフロー内に複数のジョブを設定する方法の例を紹介します。 ワークフロー内で同時実行を設定すると、単一のワークフロー内で複数のコンテナを使用して複数のジョブを同時に実行することができます。

CircleCI のすべてのお客様がシステムを安定した状態で利用できるよう、各 Executor の リソースクラス ごとに同時実行数のソフト制限が設けられています。

ジョブがキューに入る場合、この制限に達している可能性が考えられます。 制限に達する理由は、組織内で同時にジョブを実行しているユーザーの数や、ワークフローが重複しているなど、複数の要因があります。

年間プランのお客様は、追加料金なくこの制限の拡大を依頼することができます。 CircleCI サポート にご連絡ください。

ワークフロー内での同時実行

一連の同時実行ジョブを実行するには、既存の .circleci/config.yml ファイルに workflows セクションを追加する必要があります。

以下は、2 つの同時実行ジョブから成るデフォルトのワークフローオーケストレーションのシンプルな例です。 この workflows キーには一意の名前を指定する必要があります。 この例では、一意の名前は build_and_test です。 jobs キーは一意の名前のワークフローの下にネストされ、ジョブ名のリストが含まれます。 ジョブには依存関係が定義されていないため、同時に実行されます。

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/<language>:<version TAG>
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    steps:
      - checkout
      - run: <command>
  test:
    docker:
      - image: cimg/<language>:<version TAG>
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    steps:
      - checkout
      - run: <command>
workflows:
  build_and_test:
    jobs:
      - build
      - test

Server 2 で version: 2 をご使用の場合は、 workflows のセクションで再びバージョンを下記のスニペットのように指定する必要があるのでご注意ください。

...
workflows:
  version: 2
  build_and_test:
    jobs:
      - build
      - test
...

ファンアウト/ファンイン ワークフローの例

同時実行ワークフローを使ったより複雑な例では、共通のビルドジョブを実行し、次にファンアウトして一連の受け入れテストジョブを同時に実行し、最後にファンインして共通のデプロイジョブを実行します。 その流れは以下の通りです。

Fan-out and Fan-in Workflow

下記の .circleci/config.yml スニペットは、ファンイン・ファンアウトジョブの実行が設定された workflows の例です。 この例では、build ジョブが成功した後すぐに 4 つの受け入れテスト jobs がスタートします。 4 つの acceptance_test ジョブすべてが成功するのを待って、 deploy ジョブが実行されます。

...
workflows:
  build_accept_deploy:
    jobs:
      - build
      - acceptance_test_1:
          requires:
            - build
      - acceptance_test_2:
          requires:
            - build
      - acceptance_test_3:
          requires:
            - build
      - acceptance_test_4:
          requires:
            - build
      - deploy:
          requires:
            - acceptance_test_1
            - acceptance_test_2
            - acceptance_test_3
            - acceptance_test_4
...

ワークフロー内での同時実行 で述べたように、Server 2 で version: 2 をご使用の場合は、 workflows のセクションでバージョンを指定する必要があるのでご注意ください。


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。