1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CircleCIで2つのMySQLデータベースに接続するアプリのconfig.yml

Last updated at Posted at 2020-03-30

初めに

CircleCiがV2に移行する前から、2つのデータベース(MySQL)に接続するアプリのテストを実行させていました。
CircleCiが完全にV1を廃止することに伴ってV2に移行した際に設定方法を検討して実現できた方法を記載します。

構成

このような構成のアプリを想定しています。
DBサーバーのインスタンスは1つです。
image.png

設定方法

.circleci/config.yml
version: 2
jobs:
  build:
    docker:
      - image: circleci/openjdk:8-jdk
      - image: circleci/mysql:5.7
        environment:
          MYSQL_DATABASE: database1, database2  # ココがポイント!
          MYSQL_HOST: 127.0.0.1
          MYSQL_ROOT_PASSWORD: 'foo'
          MYSQL_ROOT_HOST: '%'
        command: [--character-set-server=utf8, --collation-server=utf8_general_ci]

    working_directory: ~/repo
    
    environment:
      JVM_OPTS: -Xmx3200m
      TERM: dumb
      TZ: '/usr/share/zoneinfo/Asia/Tokyo'
    
    steps:
      - checkout
      
      - run:
          name: Wait for db
          command: dockerize -wait tcp://localhost:3306 -timeout 1m
          
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "build.gradle" }}
          - v1-dependencies-
          
      - run: gradle dependencies
      
      - save_cache:
          paths:
            - ~/.gradle
          key: v1-dependencies-{{ checksum "build.gradle" }}
          
      - run:
          name: Running tests
          command: gradle test -PexcludeThroughTest=true --info
          
      - store_artifacts:
          path: ./build/reports
          destination: reports
          
      - store_test_results:
          path: ./build/test-results

ポイント

ポイントは環境変数のMYSQL_DATABASEに設定する値です。
カンマ区切りでデータベース名を指定することで、起動時にその名前のデータベースを作成してくれるようになります。

最後に

インターネットで探しても複雑な方法ばかり見つかりますが、この方法が一番シンプルに実現できるのではないでしょうか。
残念ながらこの方法に行き着いたソースがわからなくなってしまったのですが、参考にしていただければ幸いです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?