CircleCIでcheckoutしてきたリポジトリ以外のprivateリポジトリを操作する方法
マシンユーザーを作成する
一般的なユーザーを作るときと同じように作成します。
メール通知などが来るので、開発用の共有メールアドレスなどがあればそちらを使ったほうが良いかも。
マシンユーザにPersonal access tokenを発行する
Githubにマシンユーザでログインして、下記にアクセス。
https://github.com/settings/tokens/new
(ユーザーのSettings -> Developer Settings -> Personal access token)から発行します。
マシンユーザに操作したいリポジトリのRead権限を与える
リポジトリのSettings -> Manage access -> invite teams or people(https://github.com/{リポジトリのURL}/settings/access)から
マシンユーザを招待し、Read権限を与えます。
CircleCIでcheckoutをするプロジェクトの環境変数にPersonal access tokenを設定する
Project Settings -> Environment Variables
(https://app.circleci.com/settings/project/github/{GitHubのユーザー名}/{リポジトリ名}/environment-variables) に
任意の名前でGithubのマシンユーザのPersonal access tokenを貼り付けます。
yamlの中で環境変数を使う
操作したいリポジトリに関して下記のようにyamlに記載すれば、
checkoutしてきたリポジトリ以外のprivateリポジトリでも操作できます。
git clone https://${GITHUB_PERSONAL_ACCESS_TOKEN}@github.com/Hoge/fuga.git
マシンユーザーとPersonal access tokenを使う理由
- リポジトリとPersonal access tokenで権限を与えた範囲でしかマシンユーザーは操作できない。
- 万が一マシンユーザーのPersonal access tokenが漏れた可能性がある場合、
すぐにPersonal access tokenを無効にできる。 - ssh key pairだと管理が手間。
参考URL
How to Authorize Your CI/CD to Checkout Additional RepositoryEnquizit Inc
GitHub と Bitbucket のインテグレーション - CircleCI
Managing deploy keys | GitHub Developer Guide
本当にそれでいい?CircleCIにおける複数のPrivateリポジトリのClone方法 | by Takuo | VELTRA Engineering | Medium