MySQL の使用

多くのアプリケーションがデータベースとしてMySQLに依存しているため、テストを実行するためには最終的にMySQLが必要になります。 以下では、GitLab RunnerのDockerとShell executorを使った方法を説明します。

Docker executorでMySQLを使用します。

GitLabRunnerをDocker executorと一緒に使っている場合は、基本的にすべての設定が済んでいます。

まず、.gitlab-ci.yml

services:
  - mysql:latest

variables:
  # Configure mysql environment variables (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: "<your_mysql_database>"
  MYSQL_ROOT_PASSWORD: "<your_mysql_password>"
Note:MYSQL_DATABASEMYSQL_ROOT_PASSWORD 変数は GitLab UI では設定できません。設定するには、UI で変数に代入し、その変数を.gitlab-ci.ymlMYSQL_DATABASEMYSQL_ROOT_PASSWORD 変数に代入します。

そして、例えばデータベースを使用するようにアプリケーションを設定します:

Host: mysql
User: root
Password: <your_mysql_password>
Database: <your_mysql_database>

なぜHostmysql を使用したのか気になる方は、サービスがどのようにジョブにリンクしているのかをご覧ください。

Docker Hubで利用可能な他のDockerイメージを使用することもできます。例えば、MySQL 5.5を使用する場合、サービスはmysql:5.5になります。

mysql イメージはいくつかの環境変数を受け入れることができます。 詳細はDocker Hubのドキュメントを参照してください。

MySQLをShell executorで使用します。

GitLab RunnerとShell executorを使って手動で設定したサーバーでもMySQLを使うことができます。

最初にMySQLサーバをインストールします:

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

MySQL root パスワード(何でもよい)を選び、聞かれたら 2 回入力します。

注:セキュリティ対策として、mysql_secure_installation を実行して匿名ユーザーを削除し、テストデータベースを削除し、root ユーザーでのリモートログインを無効にすることができます。

次のステップはユーザを作成することなので、MySQL に root でログインします:

mysql -u root -p

次に、アプリケーションで使用するユーザー(ここではrunner)を作成します。以下のコマンドの$password を実際に強力なパスワードに変更します。

mysql>これは MySQL プロンプトの一部です。

mysql> CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password';

データベースを作成します:

mysql> CREATE DATABASE IF NOT EXISTS `<your_mysql_database>` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

データベースに必要な権限を付与します:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `<your_mysql_database>`.* TO 'runner'@'localhost';

すべてがうまくいったら、データベースセッションを終了することができます:

mysql> \q

ここで、新しく作成したデータベースに接続して、すべてがうまくいっていることを確認してください:

mysql -u runner -p -D <your_mysql_database>

最後のステップとして、例えば、データベースを使用するようにアプリケーションを設定します:

Host: localhost
User: runner
Password: $password
Database: <your_mysql_database>

プロジェクト例

GitLab.comで公開されている共有ランナーを使って実行するMySQLプロジェクトの例を用意しました。

ハックしたいのであれば、フォークしてコミットし、変更をプッシュするだけです。 数瞬のうちに公開ランナーによって変更が選択され、ジョブが開始されます。