同時実行
同時実行
CircleCI では、ジョブの同時実行は下記の 2 つの状況に分られます。
-
1 つのワークフロー内に設定された複数の実行ジョブ
-
組織内の複数のメンバーが実行する複数のワークフロー
ここでは 1 つ目の状況について説明し、1 つのワークフロー内に複数のジョブを設定する方法の例を紹介します。 ワークフロー内で同時実行を設定すると、単一のワークフロー内で複数のコンテナを使用して複数のジョブを同時に実行することができます。
CircleCI のすべてのお客様がシステムを安定した状態で利用できるよう、各 Executor の リソースクラスごとに同時実行数のソフト制限が設けられています。
ジョブがキューに入る場合、この制限に達している可能性が考えられます。 制限に達する理由は、組織内で同時にジョブを実行しているユーザーの数や、ワークフローが重複しているなど、複数の要因があります。
年間プランのお客様は、追加料金なくこの制限の拡大を依頼することができます。 CircleCI サポート にご連絡ください。
ワークフロー内での同時実行
一連の同時実行ジョブを実行するには、既存の .circleci/config.yml
ファイルに workflows
セクションを追加する必要があります。
以下は、2 つの同時実行ジョブから成るデフォルトのワークフローオーケストレーションのシンプルな例です。 この workflows
キーには一意の名前を指定する必要があります。 この例では、一意の名前は build_and_test
です。 jobs
キーは一意の名前のワークフローの下にネストされ、ジョブ名のリストが含まれます。 ジョブには依存関係が定義されていないため、同時に実行されます。
Docker実行環境を使用する場合は、イメージ・レジストリ(image registries)から Docker プルを認証することを推奨します。 認証されたプルでは、プライベートな Docker イメージにアクセスすることができ、レジストリのプロバイダによっては、より高いレート制限が付与される場合もあります。 詳細は、 Docker の認証付きプルの使用 を参照して下さい。 |
version: 2.1
jobs:
build:
docker:
- image: cimg/<language>:<version TAG>
steps:
- checkout
- run: <command>
test:
docker:
- image: cimg/<language>:<version TAG>
steps:
- checkout
- run: <command>
workflows:
build_and_test:
jobs:
- build
- test
ファンアウト/ファンイン ワークフローの例
同時実行ワークフローを使ったより複雑な例では、共通のビルドジョブを実行し、次にファンアウトして一連の受け入れテストジョブを同時に実行し、最後にファンインして共通のデプロイジョブを実行します。 その流れは以下の通りです。
下記の .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
...