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_PASSWORDMySQL コンテナは
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 パイプラインを表示してアクションを確認します。