wercker で redis service を使用する方法

背景

  • CI でのテスト実行時に Redis が動作する環境を用意したい.

  • Redis は AWS ElastiCache で動作している.

  • ElastiCache はデフォルトでは許可された AWS 内のセキュリティグループからのみアクセス可能で, public アクセス可能にするには NAT インスタンス作ったりする必要がある.

docs.aws.amazon.com

wercker.yml に services セクションを追加する

services:
    - redis

他には mongo, elasticsearch などが使える.

追加される環境変数

redis service を追加すると以下の環境変数が追加される.

REDIS_PORT
REDIS_NAME
REDIS_PORT_6379_TCP_ADDR
REDIS_PORT_6379_TCP
REDIS_ENV_REDIS_DOWNLOAD_URL
REDIS_PORT_6379_TCP_PORT
REDIS_ENV_REDIS_DOWNLOAD_SHA
REDIS_ENV_GOSU_VERSION
REDIS_ENV_REDIS_VERSION

重要なのが REDIS_PORT_6379_TCP_ADDR で, 実行環境の Redis の接続先として設定する

const redisHost = process.env.REDIS_PORT_6379_TCP_ADDR || process.env.REDIS_HOST;

注意点

wercker 公式にある DockerHub(sutoiku/redis) を引用する方法だと, Redis 関連の環境変数が設定されず上記設定は使えないので注意.

参考

devcenter.wercker.com

qiita.com