正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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変数を参照してください。

  1. MySQLイメージを指定するには、.gitlab-ci.ymlファイルに以下を追加します:

    services:
      - mysql:latest
    • Docker Hubで利用可能なDockerイメージを使用できます。たとえば、MySQL 5.5を使用するには、mysql:5.5を使用します。
    • mysqlイメージは、環境変数を受け入れることができます。詳細については、Docker Hubドキュメントを参照してください。
  2. データベース名とパスワードを含めるには、.gitlab-ci.ymlファイルに以下を追加します:

    variables:
      # Configure mysql environment variables (https://hub.docker.com/_/mysql/)
      MYSQL_DATABASE: $MYSQL_DB
      MYSQL_ROOT_PASSWORD: $MYSQL_PASS

    MySQLコンテナは、データベースに接続するためにMYSQL_DATABASEMYSQL_ROOT_PASSWORDを使用します。これらの値は、GitLab CI/CD変数(上記の例では$MYSQL_DBおよび$MYSQL_PASS)を使用して渡し、直接呼び出すのではなく渡します。

  3. データベースを使用するようにアプリケーションを設定します(例):

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

    この例では、ユーザーはrunnerです。データベースにアクセスする権限を持つユーザーを使用する必要があります。

Shell executorでMySQLを使用する

Shell executorでGitLab Runnerを使用する手動構成されたサーバーでMySQLを使用することもできます。

  1. MySQLサーバーをインストールします:

    sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
  2. MySQLのrootパスワードを選択し、求められたら2回入力します。

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

  3. rootとしてMySQLにログインして、ユーザーを作成します:

    mysql -u root -p
  4. アプリケーションで使用されるユーザー(この場合はrunner)を作成します。コマンドの$passwordを強力なパスワードに変更します。

    mysql>プロンプトで、次のように入力します:

    CREATE USER 'runner'@'localhost' IDENTIFIED BY '$password';
  5. データベースを作成します:

    CREATE DATABASE IF NOT EXISTS `<your_mysql_database>` DEFAULT CHARACTER SET `utf8` \
    COLLATE `utf8_unicode_ci`;
  6. データベースに必要な権限を付与します:

    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES ON `<your_mysql_database>`.* TO 'runner'@'localhost';
  7. すべてがうまくいった場合は、データベースセッションを終了できます:

    \q
  8. 新しく作成されたデータベースに接続して、すべてが整っていることを確認します:

    mysql -u runner -p -D <your_mysql_database>
  9. データベースを使用するようにアプリケーションを設定します(例):

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

プロジェクト例

MySQLの例を表示するには、このサンプルプロジェクトをフォークしてください。このプロジェクトでは、インスタンスRunnerGitLab.comで使用します。README.mdファイルを更新し、変更をコミットして、CI/CDパイプラインを表示して、動作を確認します。