読者です 読者をやめる 読者になる 読者になる

rakugakibox.net

技術ノート。兼JS/CSS実験場。 ♡:Java, Spring, AWS.

CircleCI で MySQL 5.6.23 を使う (現 Amazon RDS の最新版と同じバージョン)

CircleCI に MySQL 5.6.23 をインストールする方法をまとめました。
現 Amazon RDS の最新版と同じバージョンです。

きっかりマイナーバージョンまで指定したパッケージを使ってるので、
未確認ですが 5.6.x 系ならお好みのものを使えると思います。

事の発端

本番で使う予定の Amazon RDS (MySQL) と
同じDBMS, 同じバージョンを使って CircleCI でテストを回したい!

でも CircleCI の MySQL は 5.5 しか入ってない...
調べてもマイナーバージョンまでは指定のない記事が多い...
(できればマイナーバージョンまで合わせておきたい派です)

とゆーわけで自力でパッケージをダウンロード&インストールしました。

CircleCI 環境

  • Architecture: x86_64
  • Username: ubuntu
  • Ubuntu 12.04 (precise)
  • Kernel version: 3.2

パッケージはこの環境に合うものを使いました。

circle.yml

こんな circle.yml でいけました。

machine:
  environment:
    DEBIAN_FRONTEND: noninteractive
    MYSQL_DL_URL: http://downloads.mysql.com/archives/get/file

dependencies:
  override:
    - mkdir -p ~/mysql-packages
    - >
      [ -e ~/mysql-packages/mysql-common_5.6.23-1ubuntu12.04_amd64.deb ] \
        || wget $MYSQL_DL_URL/mysql-common_5.6.23-1ubuntu12.04_amd64.deb -P ~/mysql-packages
    - >
      [ -e ~/mysql-packages/mysql-community-server_5.6.23-1ubuntu12.04_amd64.deb ] \
        || wget $MYSQL_DL_URL/mysql-community-server_5.6.23-1ubuntu12.04_amd64.deb -P ~/mysql-packages
    - >
      [ -e ~/mysql-packages/mysql-community-client_5.6.23-1ubuntu12.04_amd64.deb ] \
        || wget $MYSQL_DL_URL/mysql-community-client_5.6.23-1ubuntu12.04_amd64.deb -P ~/mysql-packages
    - sudo apt-get remove --purge 'mysql-*'
    - sudo apt-get install libaio1
    - sudo dpkg -i ~/mysql-packages/mysql-common_5.6.23-1ubuntu12.04_amd64.deb
    - sudo dpkg -i ~/mysql-packages/mysql-community-server_5.6.23-1ubuntu12.04_amd64.deb
    - sudo dpkg -i ~/mysql-packages/mysql-community-client_5.6.23-1ubuntu12.04_amd64.deb
  cache_directories:
    - ~/mysql-packages
  • 大まかな流れ:
    1. debパッケージをダウンロード。
    2. 既存の MySQL をアンインストール。
    3. ダウンロードしたパッケージをインストール。
  • debパッケージのダウンロードURLは、公式のアーカイブダウンロードページから辿ったものです。
  • ダウンロードしたdebパッケージはキャッシュしてみました。
  • debパッケージのインストール中に確認メッセージが出て止まらないように、 DEBIAN_FRONTEND=noninteractive で抑えてます。

DBアクセス情報

設定は CircleCI で用意されてたものが引き継がれたので、

  • DB: circle_test
  • ユーザ: ubuntu
  • パスワード: なし

でアクセスできました。
もちろん新しいDB/ユーザを作るコマンドを組み込んでもいいと思う。

参考までに、 CircleCI で用意されてるDBの情報はこんな。

Both postgresql and mysql are set up to use the ubuntu user, have a database called circle_test available, and don't require any password. The other databases should not need any specific username or password, and should just work.

コード

実際に CircleCI で回したコードと結果です。

参考

関連記事