はじめに
GitHub Actionsのワークフローで使い捨てのMySQLを利用するためのメモです。
MySQLはジョブの開始時にサービスコンテナとして都度新規のものを立ち上げ、ジョブの終了時に破棄します。(ジョブ内の各ステップでは同一のコンテナを使用します)
JUnitでMySQLを利用したい場合は、Testcontinersを利用した方がポータビリティも高くていいと思います。
今回紹介する方法は、ステップをまたいだ結合テストなどに使えるかもしれません?
ひとまず、後ほど解説するワークフローのymlの全体像と、
example-github-actions-with-ephemeral-mysql/example.yml at main · norio-io/example-github-actions-with-ephemeral-mysql
An example of GitHub Action which uses an ephemeral MySQL. - example-github-actions-with-ephemeral-mysql/example.yml at main · norio-io/example-github-actions-w...
それをGitHub Actionsで動かした結果です。
Add example · norio-io/[email protected]
An example of GitHub Action which uses an ephemeral MySQL. - Add example · norio-io/[email protected]
解説
ジョブ定義の例です。(ymlファイル全体はこちら)
参考
GitHub ActionsのPostgreSQLサービスコンテナについての公式ドキュメント。ほぼこれを参考にしました。

PostgreSQLサービスコンテナの作成 - GitHub Docs
ワークフローで利用するPostgreSQLサービスコンテナを作成できます。 このガイドでは、コンテナで実行されるジョブか、ランナーマシン上で直接実行されるジョブのためのPostgreSQLサービスの作成例を紹介します。
GitHub Actionsのサービスコンテナについての公式ドキュメント。サービスコンテナ全般の概要はこちら。

サービスコンテナについて - GitHub Docs
サービスコンテナを使って、データベース、Webサービス、メモリキャッシュ、あるいはその他のツールをワークフローに接続できます。
DockerHubのMySQLの公式。コンテナのオプションなどはこちらを参照。
Docker
冒頭で少し触れたTestcontainersについてもリンクしておきます。
Testcontainers for Java
コメント