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>"
MYSQL_DATABASE
とMYSQL_ROOT_PASSWORD
変数は GitLab UI では設定できません。設定するには、UI で変数に代入し、その変数を.gitlab-ci.yml
のMYSQL_DATABASE
とMYSQL_ROOT_PASSWORD
変数に代入します。そして、例えばデータベースを使用するようにアプリケーションを設定します:
Host: mysql
User: root
Password: <your_mysql_password>
Database: <your_mysql_database>
なぜHost
にmysql
を使用したのか気になる方は、サービスがどのようにジョブにリンクしているのかをご覧ください。
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プロジェクトの例を用意しました。
ハックしたいのであれば、フォークしてコミットし、変更をプッシュするだけです。 数瞬のうちに公開ランナーによって変更が選択され、ジョブが開始されます。