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

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

サービスコンテナについて - GitHub Docs
サービスコンテナを使って、データベース、Webサービス、メモリキャッシュ、あるいはその他のツールをワークフローに接続できます。
DockerHubのMySQLの公式。コンテナのオプションなどはこちらを参照。
mysql - Official Image | Docker Hub
MySQL is a widely used, open-source relational database management system (RDBMS).
冒頭で少し触れたTestcontainersについてもリンクしておきます。

Testcontainers
Testcontainers is an opensource framework for providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can r...
コメント