Heroku CI の並列テスト実行
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年07月15日(金)
Table of Contents
Heroku CI では、実行時間を大幅に短縮するための最大 32 個の dyno にまたがる分散テスト実行がサポートされています。
クイックスタート
アプリの app.json
ファイルの formation
キーの下でテスト実行の並列処理を指定します。
{
"environments": {
"test": {
"formation": {
"test": {
"quantity": 32
}
}
}
}
}
この設定により、テスト実行あたり 32 個のテスト dyno が起動されます。
テストスイートの並列化
Heroku CI は、並列テスト実行の一部である dyno に次の環境変数を公開します。
CI_NODE_TOTAL
: テスト実行での dyno の合計数CI_NODE_INDEX
: テスト実行でのこの dyno のインデックス (0 インデックス付け)
これらの値を使用して、並列テストランナーに各 dyno でどのテストを実行すべきかを指定します。
テストランナー
並列実行をサポートするテストランナーには次のものがあります (ただし、これに限定されません)。
Ruby
- ci_queue
- knapsack gem または Knapsack Pro アドオン
Javascript
Ember.js
並列テスト実行でのデータベース
並列テスト実行での dyno は、テスト実行のためにプロビジョニングされたいずれかのデータベース (およびその他のアドオン) の同じインスタンスを共有します。つまり、Heroku Postgres インスタンスが最大 32 個の dyno で共有される可能性があります。
多くのテストフレームワークでは、データベースへの排他アクセスが発生することが予測されます。実際のテストフレームワークがこれに該当する場合は、テスト実行で Heroku Postgres と Heroku Data for Redis に特殊な in-dyno
プランをプロビジョニングできます。これらのアドオンのプランを app.json
ファイルで次のように変更します。
{
"addons": [
"heroku-postgresql:in-dyno",
"heroku-redis:in-dyno"
]
}
Postgres の拡張機能は現在、in-dyno
Heroku Postgres プランによって制限されています。サポートされている拡張機能の確認