0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Pages × GitHub Actions を最小構成で高速化する設計整理

0
Posted at

はじめに

GitHub Pages は設定が簡単で無料という利点がある一方、Actions 経由のデプロイは「遅い」と感じられることがある。本記事では、GitHub Pages の公式 Actions を前提に、どこまで高速化でき、どこから先が構造的な限界なのかを整理する。結論だけでなく、なぜそうなるのかという設計理由も含めて解説する。

GitHub Actions における「遅さ」の正体

Pages デプロイの処理時間は、ビルド計算よりも I/O に強く依存する。具体的には、artifact の圧縮、アップロード、Pages 側での検証と展開が支配的である。ビルド工程が軽量な場合、YAML の最適化で削れる余地は限定的になる。

そのため、高速化の基本軸は「送る量を減らす」「無駄に workflow を起動しない」に集約される。CPU 使用率や並列化を意識しても、効果はほとんどない。

paths / paths-ignore の役割と誤解

push.triggers の paths や paths-ignore は、「workflow を起動するかどうか」を決める条件であり、デプロイ対象のファイル量には一切影響しない。ignore を多く書いたから処理が遅くなる、という因果関係は存在しない。

一方で、paths-ignore は論理的に分かりにくく、想定外に workflow が走る原因になりやすい。公開対象が明確な場合は、例外を列挙するより paths で主語を限定した方が挙動が安定する。

upload-pages-artifact が必須である理由

GitHub Pages の deploy-pages アクションは、直前にアップロードされた Pages 用 artifact のみを入力として動作する。push の paths 設定で対象を絞っていても、artifact を省略することはできない。

これは、イベント条件とデータフローを明確に分離する設計思想によるものだ。Pages は「どのファイルを公開するか」を暗黙に推論せず、利用者が明示的に指定することを前提としている。

docs と dist の両方が必要なケースの整理

docs/index.html がクエリ文字列を使って dist 配下の md を動的に fetch する構成では、docs と dist はどちらも最終成果物である。この場合、入力と出力を分離するモデルは成立しない。

ただし、upload-pages-artifact は単一パスしか指定できないため、公開用ディレクトリ(例: public)を作成し、その配下に docs と dist をまとめる必要がある。Pages は「単一ルートを丸ごと公開する」モデルしか持たないためである。

fetch-depth: 1 の意味と安全性

actions/checkout の fetch-depth: 1 は、「現在の HEAD コミットのみを取得する」設定であり、直前の履歴は含まれない。git diff や履歴依存の処理はできなくなるが、静的サイト生成や Pages デプロイでは問題にならない。

push イベントの paths 判定は checkout より前に行われるため、fetch-depth を浅くしてもトリガー条件が壊れることはない。履歴を使わない限り、純粋な最適化と考えてよい。

id-token: write と GITHUB_TOKEN の関係

id-token: write は、OIDC を用いて「この workflow が正規のものだ」と証明するための権限である。actions/deploy-pages@v4 は、この OIDC トークンを用いて Pages 側に認証する。

過去には GITHUB_TOKEN だけで動作する構成も存在したが、現在の公式構成では id-token が前提となっている。これは権限を絞り、短命な認証情報を使うためのセキュリティ設計の変更である。

どこまで高速化できるのかという結論

checkout の shallow 化、artifact 対象の限定、paths による起動抑制まで行うと、残る時間は GitHub Pages 側の固定コストになる。ここから先は YAML の工夫では削れない。

さらなる短縮を狙う場合、送信データそのものを減らす、デプロイ頻度を下げる、あるいは差分デプロイ対応の別サービスを使う必要がある。GitHub Pages を使う限り、現在の構成は実質的に最速に近い。

おわりに

GitHub Pages のデプロイが遅く感じられる場合、多くは設定ミスではなく設計上の限界に達している。本記事で整理した責務分離と制約を理解すれば、無意味な最適化を避け、納得感のある構成を選択できるはずである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?