デプロイ(CitHub 連携)| CircleCI
CircleCI と GitHub連携 を連携してデプロイする例をまとめています。
- CircleCIのDeployキー、Additional SSH Keysは秘密鍵
キーの種類
ref. https://circleci.com/docs/ja/github-integration/#user-keys-and-deploy-keys
Checkout SSH KeysDeploy Key:リポジトリ固有の秘密鍵(デフォルトはリードオンリー)- 公開鍵のパス:
GitHub対象リポジトリ >Settings>Deploy KeysにCircleCIの名前で登録 例)https://github.com///settings/keys
- 公開鍵のパス:
User Key:ユーザーのすべてのリポジトリにアクセスできる秘密鍵- 公開鍵のパス GitHub ユーザーの
Settings> SSH keys https://github.com/settings/keys
- 公開鍵のパス GitHub ユーザーの
Additional SSH Keys
GitHub連携(Set Up Project)とSSH
Set up ProjectによってCircleCiがSSHキーペアを作成して、CircleCIに秘密鍵を、GitHubに公開鍵を自動で保存する。
上記で作成したSSHキーペアは読み込み専用(Read-only)なので、GitHubからPull/Checkoutはできるが、Pushはできない。
CircleCI>Project Settings>SSH KeysにDeploy Keyを登録 =>CircleCIに作成されるのは秘密鍵GitHub対象リポジトリ >Settings>Deploy KeysにCircleCIの名前で登録 =>GitHubに登録されるのは↑とペアの公開鍵
ref.
新しいプロジェクトを追加するとき、CircleCI ではプロジェクトの Web ベース VCS (GitHub または Bitbucket) に対するデプロイ キーを作成します。 デプロイ キーは、リポジトリ固有の SSH 鍵です。 VCS として GitHub を使用している場合、GitHub に公開鍵を持たせ、CircleCI に秘密鍵を格納します。
https://circleci.com/docs/ja/2.0/gh-bb-integration/#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4-%E3%82%AD%E3%83%BC%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%AD%E3%83%BC
GitにPushするには
ビルドからリポジトリにプッシュするには、書き込みアクセス権のあるデプロイ キー (ユーザー キー) が必要です。 ユーザー キーの作成手順は、VCS によって異なります
https://circleci.com/docs/ja/2.0/gh-bb-integration/#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4-%E3%82%AD%E3%83%BC%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%AD%E3%83%BC
GitHubでは、SSHのUser Keyとは別の方法として、書き込みアクセス権のあるアクセス手段をPersonal access tokenでも作成できる(SSH鍵方式とは異なる、HTTPS+トークン方式の代替手段)。
発行されたトークンをCircleCIに登録する。詳細は CircleCIでGitHubのPersonal Access Tokenを使用 を参照。
CircleCIの鍵を登録する場所は、SSH KeysのAdditional SSH KeysやEnvironment Variables。
複数のリポジトリにPushする場合などに、手動でデプロイキーを作成する方法は以下を参照。
https://circleci.com/docs/ja/2.0/gh-bb-integration/#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4-%E3%82%AD%E3%83%BC%E3%81%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%82%AD%E3%83%BC
CircleCIから本番サーバーにデプロイ

登場人物
- 本番サーバ
CircleCIGitHubリポジトリ
本番サーバーでSSH key pairを作成
以下のファイルを作成したと仮定して進める。
- id_rsa.example(秘密鍵)
- id_rsa.example.pub(公開鍵)
SSH key pairを配置
本番サーバー
公開鍵 id_rsa.example.pubをauthorized_keysへ追加する。
$ cat ~/.ssh/id_rsa.example.pub >> ~/.ssh/authorized_keys
CircleCI
秘密鍵をProjectのSSH > Additional SSH Keysに追加する。
Ref
- https://circleci.com/docs/2.0/add-ssh-key/ (SSH KEY)