CircleCI에서 두 개의 MySQL 데이터베이스에 연결하는 앱의 config.yml

처음에



CircleCi가 V2로 마이그레이션하기 전부터, 2개의 데이타베이스(MySQL)에 접속하는 앱의 테스트를 실행시키고 있었습니다.
CircleCi가 완전히 V1을 폐지함에 따라 V2로 이행했을 때 설정 방법을 검토하여 실현할 수 있었던 방법을 기재합니다.

구성



이러한 구성의 앱을 가정합니다.
DB 서버의 인스턴스는 하나입니다.


설정 방법



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로 설정하는 값입니다.
쉼표로 구분하여 데이터베이스 이름을 지정하면 시작 시 해당 이름의 데이터베이스를 만들 수 있습니다.

마지막으로



인터넷에서 검색해도 복잡한 방법만 발견됩니다만, 이 방법을 가장 간단하게 실현할 수 있는 것은 아닐까요.
유감스럽지만 이 방법에 도착한 소스를 모르게 되어 버렸습니다만, 참고로 해 주시면 다행입니다!

좋은 웹페이지 즐겨찾기