Composer でプライベートリポジトリを require している場合、GitHub Actions で普通に
- name: Install dependencies
run: composer install --prefer-dist --no-progress
としていると認証エラーが発生します。(当然ですよね)
Failed to clone the git@github.com:foo/bar.git repository,
try running in interactive mode so that you can enter your GitHub credentials
これを解決するためには、プライベートリポジトリを利用するためのアクセストークンを渡してあげる必要があります。アクセストークンを Actions に書いてコミットするなんてことは絶対しちゃいけないので、secret を利用します。なので全体では次のような手順が必要です。
- GitHub のアクセストークンを生成する
- リポジトリの secret にそのトークンを保存する
- Actions の job 定義の中で環境変数をセットする
また、アクセストークンが期限切れになった(なりそうな)時には更新する必要があります。
更新は次のような手順が必要です。
- GitHub のアクセストークンを更新する
- リポジトリの secret のトークンを更新する
以下、それぞれの手順を説明します。
新たに設定する
1. GitHub のアクセストークンを生成する
GitHub Actions 用のアクセストークンを生成します。プライベートリポジトリを require しているので、すでにアクセストークンを生成してローカルの Composer で使っていることと思いますが、ここでは新たに生成します。
次のリンクから生成可能です。
- GitHub: アクセストークン にアクセスします
-
Generate new token
をクリックします - Note の欄には何のためのトークンかを説明する文章を入れましょう。適当に入れると後でわけわからなくなります
- Select scopes の欄では、
repo
にチェックを入れます -
Generate token
ボタンをクリックして生成します - Personal Access Token のページに戻りますが、そこにアクセストークンが表示されています
- コピーボタンをクリックしてトークンをクリップボードにコピーします (ここでコピーし忘れると二度と見ることはできませんので注意が必要です)
トークンのコピーを忘れた場合は更新の時の手順に従ってトークンの再生成を行なってください。
2. リポジトリの secret にそのトークンを保存する
生成したトークンは、リポジトリの Actions secret に保存しておきます。
- Actions を設定したいと思っているリポジトリを開き、
Setting
>Secrets and variables
>Actions
と選択します -
New repository secret
をクリックします -
Name
の欄に名前(ここではCOMPOSER_AUTH
としますが別の名前でも構いません)を入れValue
の欄にトークンをペーストします -
Add secret
ボタンをクリックして保存します
3. Actions の job 定義の中で環境変数をセットする
次のように、COMPOSER_AUTH
環境変数に secret の値を含んだ文字列をセットします。この前のセクションで secret の名前を変更した場合は、secrets.COMPOSER_AUTH
の部分もそれに合わせて変更してください。
- name: Install dependencies
env:
COMPOSER_AUTH: '{"github-oauth": {"github.com": "${{secrets.COMPOSER_AUTH}}"} }'
run:
composer install --prefer-dist --no-progress
以上で完了です。
更新する
1. GitHub のアクセストークンを更新する
- GitHub: アクセストークン にアクセスします
- トークンの一覧の中から対象のトークンを選択します
-
Regenerate token
ボタンをクリックして再生成します - 確認画面が表示されますので
Regenerate token
をクリックします - Edit personal access token のページが表示されますが、画面上部に再生成されたトークンが表示されます。
- Personal Access Token のページに戻りますが、そこにアクセストークンが表示されています
- コピーボタンをクリックしてトークンをクリップボードにコピーします (ここでコピーし忘れると二度と見ることはできませんので注意が必要です)
-
Update token
ボタンをクリックすると更新されます
コピーを忘れた場合は、もう一度再生成をします。
2. リポジトリの secret のトークンを更新する
- 対象のリポジトリを開き、
Setting
>Secrets and variables
>Actions
と選択します - Repoitory secrets の一覧に設定済みの secret があると思いますので、その
Update
ボタンをクリックします -
Value
の欄にトークンをペーストします -
Update secret
ボタンをクリックして保存します
以上で更新は完了です。