LoginSignup
12
13

More than 3 years have passed since last update.

CircleCIからCapistranoデプロイを実行する

Last updated at Posted at 2018-05-23

やりたいこと

  • 自動テストがパスし、masterブランチだった場合は自動でデプロイを実行する

前提条件

  • Ruby 2.4.0
  • Rails 5.1.4
  • Capistrano 3
  • CircleCI 2

Capistranoの設定

設定自体は様々な記事で解説されているので他に譲るが,
デプロイ先のIPアドレスやSSHのパス指定は,環境変数で管理するようにした.

config/deploy/production.rb
server ENV['SERVICE_NAME_PRODUCTION_IP'], port: 22, roles: [:app, :web, :db], primary: true

set :ssh_options, {
    forward_agent: true,
    user: fetch(:user),
    keys: ["#{ENV['SERVICE_NAME_PRODUCTION_SSH_KEY']}"]
}

ローカル環境からコマンドでデプロイできるようになる.

$ bundle exec cap production deploy

CircleCI向けの設定

デプロイ用のSSHの秘密鍵をCircleCIに設定

PERMISSIONS > SSH Permissions からデプロイで使用しているSSHキーの秘密鍵を登録する.

image.png

CircleCIに環境変数を設定

BBUILD SETTINGS > Environment Variables からCapistranoの設定ファイル内で参照している環境変数を登録する.
SERVICE_NAME_PRODUCTION_SSH_KEY には ~/.ssh/id_rsa を設定する.

image.png

add_ssh_keys

deploy step に fingerprints の読み込みを記述する.

circleci/config.yml
      - add_ssh_keys:
          fingerprints:
            - "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13