GitHub Actions × GitHub Pages

このウェブサイトの生成には、GitHub ActionsとGitHub Pagesを使っている。developブランチが更新されたら、npm run build を実行して、peaceiris/[email protected] でGitHub Pages用のブランチに成果物をpushする──という簡単な仕組みなはずなんだけど、作業中に幾つかはまりどころがあったので書き残しておく。

GITHUB_TOKENの権限は弱い

デフォルトで用意されているGITHUB_TOKENを利用して静的ファイルをpushすれば、GitHub Pagesに反映される……かと思いきや、そうはならない。リポジトリの設定画面からGitHub Pagesのビルドで何らかのエラーが発生したことは確認できるのだけど、それ以上のことは分からない。

Publicリポジトリ向けに用意されているアクセストークンには、GitHub Pages向けのイベントを発火する権限が足りないらしい。解決策の一つとして、適切な権限を持ったPersonal Access Tokenを発行して代わりに使う方法があるので、今回はそうすることにした。

丁度最近、GitHub Packagesの正式リリースと共にGITHUB_TOKENにread:packagesの権限が追加されていた。GitHub ActionsからGitHub Pagesを利用したいケースはよくあるだろうと思うので、今後これについても権限が追加されるかもしれないと思っている。

文字列リテラルは一重引用符

これはGitHub Pagesは関係無い話題。キャッシュ機能を使うために hashFiles("package-lock.json") と書いていたのだけど、ここで怒られた。GitHub Actionsでの文字列リテラルは、二重引用符ではなく一重引用符で囲む必要がある。ドキュメントにもそう書いてある