GitHub ActionsでSQL Serverサービスコンテナの起動を待つ
GitHub ActionsでSQL Serverサービスコンテナ1の起動を待つには、次のようにワークフローの設定を書く。
jobs:
test:
runs-on: ubuntu-latest
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
env:
# 以下はmcr.microsoft.com/mssql/server自体の設定
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: ${{ secrets.MSSQL_SA_PASSWORD }}
# 以下はsqlcmdの設定
SQLCMDUSER: sa
SQLCMDPASSWORD: ${{ secrets.MSSQL_SA_PASSWORD }}
SQLCMDDBNAME: mydatabase
ports:
- 1433:1433
options: >-
--health-cmd="/opt/mssql-tools/bin/sqlcmd -Q 'SELECT 1'"
--health-interval=10s
結論としては、イメージに入っているsqlcmdを使い、DBに向けてSELECTできるかどうかでhealthyかどうかを判断する。
env
の意味は次のとおり。
名前 | 意味 |
---|---|
ACCEPT_EULA | この値があるとライセンス条項に同意したことになる |
MSSQL_SA_PASSWORD | 管理者(sa)のパスワード。強めのパスワードポリシーがある。必要に応じてsecretsに格納したものを使う |
SQLCMDUSER | sqlcmdが使うユーザー名。管理者で接続する |
SQLCMDPASSWORD | sqlcmdが使うパスワード |
SQLCMDDBNAME | sqlcmdが接続するデータベース |
options
は”Creating PostgreSQL service containers - GitHub Docs”に書いてあるような方法そのまま。
- sqlcmdは /opt/mssql-tools/bin/sqlcmd に置いてあるものを使い、DBMSが実行してくれる最小限のクエリとして
SELECT 1
を発行 - リトライやインターバルは適宜設定
とする2。