CircleCI は MySQL や Redis は標準でサポートしているのですが、さすがに DynamoDB は非対応なので、テスト時に DynamoDB Local を動かすよう設定してみました。
circle.yml
dependencies:
cache_directories:
- "~/DynamoDBLocal"
post:
- "[ -d ~/DynamoDBLocal ] || (mkdir ~/DynamoDBLocal; cd ~/DynamoDBLocal; curl -s -L http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_latest.tar.gz | tar xz)"
test:
pre:
- "java -Xms1024m -Xmx1024m -Djava.library.path=~/DynamoDBLocal/DynamoDBLocal_lib -jar ~/DynamoDBLocal/DynamoDBLocal.jar":
background: true
dependencies の post で、HOME にディレクトリ DynamoDBLocal がなければ Amazon から取得して展開するようにしています。
dependencies の cache_directories を指定することで、展開済の DynamoDB Local をキャッシュできるので、次回以降の build 時のセットアップを短縮できます。
後は、test の pre で DynamoDB Local を稼働させればOKです。
ポイントは background: true
で、これを指定することで、いわゆる nohup + &
の形で実行してくれます。
設定次第でいろいろ細かいカスタマイズができ、サポートのレスポンスも丁寧で早いので、CircleCI は今のところかなりオススメですね。