はじめに
2021年5月に GitHub Pages を公開するための GitHub Action ワークフローを構築しました。
それから約5年ほど経過しました。当時は最新だった手法も、今では古いものとなりつつあります。
長らくメンテナンスを怠っていましたが、近年の CI/CD における Tips やセキュリティ動向を踏まえ、このたびワークフローを刷新しました。本記事では、2026年1月時点における更新内容を備忘録として残します。
刷新したワークフローは以下となります。
更新方針: 公式ドキュメントへの準拠とセキュリティ強化
基本的には GitHub ドキュメントをベースに、より堅牢で使い勝手の良い構成を目指しました。
actions/upload-pages-artifact, actions/deploy-pages への移行
これまではサードパーティ製のアクションを利用してデプロイしていましたが、2026年1月時点では、GitHub ドキュメントでは actions/upload-pages-artifact と actions/deploy-pages を組み合わせるのが標準のようです。
- actions/upload-pages-artifact: ビルド成果物を一時保存する
- actions/deploy-pages: 保存された成果物をPagesにデプロイする
これに伴い、リポジトリの「Settings」も変更しました。 Build and deployment > Source の設定を、従来の「Deploy from a branch」から「GitHub Actions」へと切り替えています。これにより、デプロイ専用ブランチを管理する手間がなくなりました。
アクションの指定を「コミットハッシュ」で固定
アクションのバージョン指定を @v4 のようなタグ形式から、コミットハッシュ形式に変更しました。
2025年3月に発生した GitHub Actionsのサプライチェーン攻撃 があったことで関心が高まりました。タグ指定は後から改ざんされるリスクがありますが、コミットハッシュであれば「その時点のコード」であることが保証でき、意図しない悪意あるコードの混入を防げます。
権限(permissions)を最小限に定義
GITHUB_TOKEN に対して「最小権限の原則」を適用しました。
permissions:
contents: read
pages: write
id-token: write
ワークフローに必要な権限(Pagesの書き込みとIDトークンの発行)を明示的に付与することで、万が一トークンが漏洩した際の被害を最小限に抑えます。
手動実行(workflow_dispatch)の追加
CI/CDにおいて「実際に動かしてみないと挙動がわからない」という不安を解消するため、手動で実行できる workflow_dispatch イベントを追加しました。また、ヘッドレスCMS(Contentful)で編集した内容を自身のタイミングで反映させる狙いもあります。
Tips: workflow_dispatch は、対象のYAMLファイルがデフォルトブランチに存在しないとGitHubのUI上にボタンが表示されないため、初回導入時は注意が必要です。
おわりに
2025年は多くのGitHub Actionsを構築・メンテナンスする機会に恵まれました。そこで得たノウハウを、ようやく自身の個人リポジトリにも反映できました。
一度作ると放置しがちなデプロイフローですが、セキュリティの進歩や推奨環境に合わせて定期的にアップデートすることの大切さを再認識しました。
参考