とーますメモ

Ruby on Rails / Goなどの学習メモ

【CircleCI】Capistranoでデプロイする設定

まずは、CircleCIからデプロイ先サーバに接続するために秘密鍵を登録する。
詳細は以下。
thoames.hatenadiary.jp

そして以下設定を.circleci/config.ymlに追加。
※「'xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'」のフィンガープリントは
上記のリンク内の、SSH Permissions設定を行うと出力される。

[Add ssh-agent]箇所では、SSH agent forwardingを行うための設定をしている。
登録した秘密鍵をssh_agentに追加。

以下はコミットされたブランチがマスターブランチのときのみデプロイが走る例。

- add_ssh_keys:
    fingerprints:
      - 'xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'

- run:
    name: Add ssh-agent
    command: |
      ssh-agent -s > ~/.ssh_agent_conf
      source ~/.ssh_agent_conf
      for _k in $(ls ${HOME}/.ssh/id_*); do
        ssh-add ${_k} || true
      done

- deploy:
    name: Deploy via Capistrano
    command: |
      if [ "${CIRCLE_BRANCH}" != "master" ]; then
        exit 0
      fi
      
      bundle exec cap production deploy


[参考]
CircleCI 2.0 で capistrano デプロイしてみた / マスタカの ChangeLog メモ
CircleCI 2.0を使うようにするだけで、こんなに速くなるとは夢にも思わなかった! | Tokyo Otaku Mode Blog