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
- 大まかな流れ:
- 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 で回したコードと結果です。