MySQL の使用
多くのアプリケーションがデータベースとして MySQL に依存しており、テストを実行するために MySQL が必要になる場合があります。
DockerエクゼキュータでMySQLを使う
MySQLコンテナを使いたい場合は、GitLab RunnerをDocker Executorと一緒に使うことができます。
この例では、GitLab が MySQL コンテナにアクセスするためのユーザー名とパスワードを設定する方法を示します。ユーザー名とパスワードを設定しない場合は、root
.
-
MySQL イメージを指定するには、
.gitlab-ci.yml
ファイルに以下を追加します:services: - mysql:latest
-
Docker Hubで利用可能な任意のDockerイメージを使用できます。例えば、MySQL 5.5を使用するには、
mysql:5.5
. -
mysql
イメージは環境変数を受け入れることができます。詳細については、Docker Hubのドキュメントを参照してください。
-
Docker Hubで利用可能な任意のDockerイメージを使用できます。例えば、MySQL 5.5を使用するには、
-
データベース名とパスワードを含めるには、
.gitlab-ci.yml
ファイルに以下を追加します:variables: # Configure mysql environment variables (https://hub.docker.com/_/mysql/) MYSQL_DATABASE: $MYSQL_DATABASE MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
MySQL コンテナは
MYSQL_DATABASE
とMYSQL_ROOT_PASSWORD
を使用してデータベースに接続します。これらの値は、直接呼び出すのではなく、変数 ($MYSQL_DB
と$MYSQL_PASS
) を使用して渡します。 -
データベースを使用するようにアプリケーションを設定します:
Host: mysql User: runner Password: <your_mysql_password> Database: <your_mysql_database>
この例では、ユーザーは
runner
です。データベースにアクセスする権限を持つユーザーを使用する必要があります。
MySQLをShell Executorで使用します。
GitLab Runner を使う手動設定のサーバーでも、Shell executor で MySQL を使うことができます。
-
MySQL サーバーをインストールします:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
-
MySQLルートパスワードを選択し、聞かれたら2回入力します。
セキュリティ対策として、mysql_secure_installation
を実行して匿名ユーザを削除し、テストデータベースを削除し、ルートユーザによるリモートログインを無効にすることができます。 -
MySQLにrootでログインしてユーザーを作成します:
mysql -u root -p
-
アプリケーションで使用するユーザー(ここでは
runner
)を作成します。コマンドの$password
を強力なパスワードに変更します。mysql>
プロンプトで、次のように入力します:CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password';
-
データベースを作成します:
CREATE DATABASE IF NOT EXISTS `<your_mysql_database>` DEFAULT CHARACTER SET `utf8` \ COLLATE `utf8_unicode_ci`;
-
データベースに必要な権限を与えます:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `<your_mysql_database>`.* TO 'runner'@'localhost';
-
すべてがうまくいったら、データベースセッションを終了できます:
\q
-
新しく作成されたデータベースに接続し、すべてが適切に行われていることを確認します:
mysql -u runner -p -D <your_mysql_database>
-
データベースを使用するようにアプリケーションを設定します:
Host: localhost User: runner Password: $password Database: <your_mysql_database>
プロジェクトの例
MySQL のサンプルを見るには、このサンプルプロジェクトのフォークを作成してください。このプロジェクトはGitLab.comで公開されている共有 Runner を使用しています。README.md ファイルを更新して変更をコミットし、CI/CD パイプラインを表示してアクションを確認します。