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
- 大まかな流れ:
- debパッケージをダウンロード。
- 既存の MySQL をアンインストール。
- ダウンロードしたパッケージをインストール。
- 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 で回したコードと結果です。
参考
- CircleCIでMySQL5.6を使う方法 - リア充爆発日記
- Want to use MySQL 5.6 at CircleCI? (Faster version) - Qiita
- Installing MySQL on Linux Using Debian Packages from Oracle - MySQL 5.6 Reference Manual
- How do I use mysql 5.6? - CircleCI
- Test environment - CircleCI