#
ドキュメント

Document

自分のための備忘録です。

CircleCIとGitHub連携&CircleCIからデプロイ

  • CircleCIのDeployキー、Additional SSH Keysは秘密鍵

キーの種類

ref. https://circleci.com/docs/ja/github-integration/#user-keys-and-deploy-keys

キーの種類

  • Checkout SSH Keys
    • Deploy Key:リポジトリ固有の秘密鍵(デフォルトはリードオンリー)
      • 公開鍵のパス:GitHub対象リポジトリ > Settings > Deploy KeysCircleCIの名前で登録 例) https://github.com/{{user}}/{{repository}}/settings/keys/settings/keys
    • User Key:ユーザーのすべてのリポジトリにアクセスできる秘密鍵
  • Additional SSH Keys

GitHub連携(Set Up Project)とSSH

Set up ProjectによってCircleCiSSHキーペアを作成して、CircleCIに秘密鍵を、GitHubに公開鍵を自動で保存する。 上記で作成したSSHキーペアは読み込み専用Read-only)なので、GitHubからPull/Checkoutはできるが、Pushはできない。

  1. CircleCI > Project Settings > SSH KeysDeploy Keyを登録 => CircleCIに作成されるのは秘密鍵
  2. GitHub対象リポジトリ > Settings > Deploy KeysCircleCIの名前で登録 => 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では、書き込みアクセス権のあるキーはPersonal access tokenで作成できる。
↑で発行されたキー(秘密鍵になる)をCircleCIに登録する。

CircleCIの鍵を登録する場所は、SSH KeysAdditional SSH KeysEnvironment 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

複数のリポジトリに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から本番サーバーにデプロイ

CircleCIとGitHub連携

登場人物

  • 本番サーバ
  • CircleCI
  • GitHubリポジトリ

本番サーバーでSSH key pairを作成

以下のファイルを作成したと仮定して進める。

  • id_rsa.example(秘密鍵)
  • id_rsa.example.pub(公開鍵)

SSH key pairを配置

本番サーバー

公開鍵 id_rsa.example.pubauthrized_keyへ追加する。

$ cat ~/.ssh/id_rsa.example.pub >> ~/.ssh/authorized_keys

CircleCI

秘密鍵をProjectSSH > Additional SSH Keysに追加する。

Ref