MySQL の使用

多くのアプリケーションがデータベースとして MySQL に依存しており、テストを実行するために MySQL が必要になる場合があります。

DockerエクゼキュータでMySQLを使う

MySQLコンテナを使いたい場合は、GitLab RunnerをDocker Executorと一緒に使うことができます。

この例では、GitLab が MySQL コンテナにアクセスするためのユーザー名とパスワードを設定する方法を示します。ユーザー名とパスワードを設定しない場合は、root.

note
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_DATABASE
      MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
    

    MySQL コンテナはMYSQL_DATABASEMYSQL_ROOT_PASSWORD を使用してデータベースに接続します。これらの値は、直接呼び出すのではなく、変数 ($MYSQL_DB$MYSQL_PASS) を使用して渡します。

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

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

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

MySQLをShell Executorで使用します。

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

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

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

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

    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 のサンプルを見るには、このサンプルプロジェクトのフォークを作成してください。このプロジェクトはGitLab.comで公開されている共有 Runner を使用しています。README.md ファイルを更新して変更をコミットし、CI/CD パイプラインを表示してアクションを確認します。