はじめに
あるリポジトリの GitHub Actions が別のリポジトリを参照することを考える.パブリックリポジトリは自由に参照できるが,プライベートリポジトリは参照することができない.
GitHub Actions にプライベートリポジトリを参照させるために,対象のプライベートリポジトリのアクセス権を持つ GitHub アカウントの Personal Access Token (PAT) を取得し,その PAT を GitHub Actions のリポジトリの Secrets に登録する方法がある.
本稿では GitHub Actions における権限設定の考え方と,その具体的な設定方法について記す.
権限設定の考え方
パブリックリポジトリ hoge とプライベートリポジトリ fuga があり, hoge の Actions から fuga を参照することを考える. hoge の Actions はデフォルトでは fuga を参照できないため,何らかの方法で hoge の Actions に fuga へのアクセス権限を付与する必要がある.
アクセス権限周りで使うものといえば GitHub アカウントの PAT もしくは SSH 鍵である.後者を使うと当該アカウントの権限範囲であらゆることができてしまい危ういため前者を用いる.権限範囲を絞った PAT を用意して Actions に渡すことができればよい.
PAT を Actions に渡す方法としてリポジトリの Secrets を用いる. Secrets は任意の環境変数を設定する仕組みである. Secrets に PAT を設定し,あとは Actions から環境変数を読み込めば, Actions が PAT の権限範囲で自由にリポジトリを操作できるようになる.
具体的な設定方法
PAT 取得
リポジトリ fuga へのアクセス権限を持つ GitHub アカウントで PAT を作成・取得する.リポジトリを参照するだけであれば, PAT には repo 権限のみを設定すればよい.
コマンドライン用の個人アクセストークンを作成する - GitHub ヘルプ
Secrets 登録
リポジトリ hoge の Secrets に PAT を登録する.登録にはリポジトリの管理者権限が必要となる.
暗号化されたシークレットの作成と保存 - GitHub ヘルプ
Secrets 作成時の注意として,プレフィックス GITHUB_
は使用できない.
Actions で Secrets を取得
actions/checkout: Action for checking out a repo
例えば, Secrets を PAT_PIYO
という名称で保存していた場合, Actions からは ${{ secrets.PAT_PIYO }}
と指定することで Secrets の中身を取得することができる.
- name: Checkout private tools
uses: actions/checkout@v2
with:
repository: fuga
token: ${{ secrets.PAT_PIYO }}
path: fuga
あとは取得した Secrets (PAT) を使って fuga にアクセスすればよい.