Heroku CI の In-Dyno データベース
最終更新日 2024年04月29日(月)
Table of Contents
In-Dyno データベース
In-Dyno データベースは、テスト実行の dyno の内部で実行されるデータベースです。これらのデータベースは、Heroku Postgres や Heroku Data for Redis などの従来の Heroku アドオンとは、次のいくつかの注目すべき点で異なります。
- データベースクエリがネットワーク経由で渡されることはないため、より一貫した、速い速度で完了します。
- 外部アドオンに適用される制限 (行制限、接続制限、機能の有効化、より多くのデータベースを作成する機能など) の多くが適用されません。
- データは一時的です。つまり、どのような方法でも保持されたり、バックアップされたり、dyno の外部で使用可能にされたりしません。
このタイプのデータベースの主な欠点はその一時性であるため、このタイプのデータベースは本番使用には適していません。ただし、テスト実行はそれ自体が一時的であるため、柔軟性と速度の向上という利点により CI ワークフローが大幅に機能強化されます。
使用
In-Dyno データベースを使用するには前に、app.json でテスト対象の言語が反映された buildpack を指定しておく必要があります。次に例を示します。
{
"buildpacks": [
{ "url": "heroku/ruby" }
]
}
in-dyno
プランを使用することにより、Heroku CI のテスト実行に In-Dyno データベースを使用できます。これは app.json で指定できます。次に例を示します。
{
"environments": {
"test": {
"addons": ["heroku-postgresql:in-dyno", "heroku-redis:in-dyno"]
}
}
}
テスト実行が開始されたら、必要に応じて DATABASE_URL
または REDIS_URL
経由で通常どおりにデータベースを使用できます。これらの URL は、ローカルにインストールされたデータベースを指します。
リリースポリシー
In-Dyno データベースは、必ずしも従来のアドオンリリースと整合するとは限りません。In-Dyno データベースは一般に、必要に応じて最新のメジャーバージョンとリリースポイントバージョンを対象にします。
バージョンを設定する
テスト実行のために Postgres の特定のバージョンが必要な場合は、app.json
ファイルで POSTGRESQL_VERSION
の値を指定します。Heroku CI ですべてのリリースが使用できるわけではないことに注意してください。現在は 14
、15
、16
のメジャーバージョンがサポートされています。
{
"environments": {
"test": {
"env": { "POSTGRESQL_VERSION": "16" },
"addons": ["heroku-postgresql:in-dyno"]
}
}
}
同様に、テスト実行のために Redis の特定のバージョンを選択するには、app.json
ファイルで REDIS_VERSION
の値を指定します。これは、Redis のメジャーバージョン (6.2
または 7.0
) か、6.2.10
などのフルバージョン文字列のどちらかに設定する必要があります。次に例を示します。
{
"environments": {
"test": {
"env": { "REDIS_VERSION": "7.0" },
"addons": ["heroku-redis:in-dyno"]
}
}
}
制限
- In-Dyno データベースは Heroku CI でのみ機能します。その他のタイプのアプリ (Review Apps または Heroku Button アプリなど) ではプロビジョニングされません。
- 現在、
heroku-redis
およびheroku-postgresql
アドオンではin-dyno
プランのみがサポートされています。 - In-Dyno Postgres インスタンスは、SSL 接続をサポートしていません。
- In-Dyno Postgres のサポートは、次の拡張機能に制限されています。
uuid
libxslt
libxml
openssl
gssapi
krb5