デプロイ(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 に秘密鍵を格納します。
GitにPushするには
ビルドからリポジトリにプッシュするには、書き込みアクセス権のあるデプロイ キー (ユーザー キー) が必要です。 ユーザー キーの作成手順は、VCS によって異なります
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)