オラクルに買収されてから存在感が薄くなった(?)ような気がするWerckerですが、使う機会があったのでRailsでの設定をメモしておきます。

# wercker.yml
box:
  id: ruby:2.5.1

services:
  - id: mysql:5.7
    env:
      # rails-database-yml stepはrootユーザーを使わないのでランダムパスワードにしておく
      MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
      # 以下の3つを設定する必要がある
      MYSQL_DATABASE: rails_test
      MYSQL_USER: rails
      MYSQL_PASSWORD: password

  - id: redis:4

build:
  steps:
    # Node.jsは入っていないのでインストールする
    - script:
        name: install node.js
        code: curl -fsSL https://deb.nodesource.com/setup_8.x | bash - && apt-get install -qq nodejs
    # bundleのキャッシュもしてくれる
    # https://github.com/wercker/step-bundle-install
    - bundle-install
    # 自動的にdatabase.ymlの設定をしてくれる
    # https://github.com/wercker/step-rails-database-yml
    - rails-database-yml
    - script:
        name: copy .env
        code: cp .env.sample .env
    # Redisの接続先この方法でしか取れなかったけどもっといい方法ありそう
    - script:
        name: redis config
        code: echo REDIS_URL=redis://$REDIS_PORT_6379_TCP_ADDR:$REDIS_PORT_6379_TCP_PORT >> .env
    - script:
        name: db setup
        code: bundle exec rails db:schema:load db:seed_fu
    - script:
      name: rspec
      code: bundle exec rspec

  after-steps:
    # Slack通知
    # https://github.com/wercker/step-slack
    - slack-notifier:
      # 環境変数で設定
      url: $SLACK_WEBHOOK_URL
      channel: channel_name
      username: wercker

環境変数はWeb画面上で設定し、wercker.yml内では$変数名で参照します。「Protected」にすると設定値が見えなくなるので、秘匿情報を設定するときに便利です。

Werckerの環境変数設定