MySQLを使用する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
多くのアプリケーションはデータベースとしてMySQLに依存しており、テストを実行するためにそれが必要になる場合があります。
Docker executorでMySQLを使用する
MySQLコンテナを使用する場合、GitLab RunnerをDocker executorで使用できます。
この例では、GitLabがMySQLコンテナへのアクセスに使用するユーザー名とパスワードを設定する方法を示します。ユーザー名とパスワードを設定しない場合は、rootを使用する必要があります。
GitLab UIで設定された変数は、サービスコンテナに渡されません。詳細については、GitLab CI/CD変数を参照してください。
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_DB MYSQL_ROOT_PASSWORD: $MYSQL_PASSMySQLコンテナは、データベースに接続するために
MYSQL_DATABASEとMYSQL_ROOT_PASSWORDを使用します。これらの値は、GitLab CI/CD変数(上記の例では$MYSQL_DBおよび$MYSQL_PASS)を使用して渡し、直接呼び出すのではなく渡します。データベースを使用するようにアプリケーションを設定します(例):
Host: mysql User: runner Password: <your_mysql_password> Database: <your_mysql_database>この例では、ユーザーは
runnerです。データベースにアクセスする権限を持つユーザーを使用する必要があります。
Shell executorでMySQLを使用する
Shell executorでGitLab Runnerを使用する手動構成されたサーバーでMySQLを使用することもできます。
MySQLサーバーをインストールします:
sudo apt-get install -y mysql-server mysql-client libmysqlclient-devMySQLのrootパスワードを選択し、求められたら2回入力します。
セキュリティ対策として、
mysql_secure_installationを実行して、匿名ユーザーの削除、テストデータベースの削除、およびrootユーザーによるリモートログインの無効化を行うことができます。rootとしてMySQLにログインして、ユーザーを作成します:
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の例を表示するには、このサンプルプロジェクトをフォークしてください。このプロジェクトでは、インスタンスRunnerをGitLab.comで使用します。README.mdファイルを更新し、変更をコミットして、CI/CDパイプラインを表示して、動作を確認します。