AstroサイトをGitHub Pagesにデプロイする
GitHub Pagesを使用して、プリレンダリングされた静的なAstroサイトをホストできます。
GitHub Actionsを使い、GitHub.com上のリポジトリから直接デプロイできます。
デプロイ方法
Section titled “デプロイ方法”Astroは、最小限の設定でプロジェクトをGitHub Pagesにデプロイするための公式GitHub Actionを提供しています。これはGitHub Pagesへの推奨されるデプロイ方法です。
以下の手順に従って、GitHub Actionを使用してAstroサイトをGitHub Pagesにデプロイしてください。これにより、リポジトリからGitHub URL(例:https://<username>.github.io/<my-repo>)でサイトが作成されます。デプロイ後、オプションでカスタムドメインを設定して、好みのドメイン(例:https://example.com)でサイトを公開できます。
-
プロジェクト内に
.github/workflows/deploy.ymlファイルを作成し、以下のYAMLを貼り付けます。deploy.yml name: Deploy to GitHub Pageson:# `main`ブランチにプッシュするたびにワークフローをトリガーします。# 別のブランチを使用している場合は、`main`をそのブランチ名に置き換えてください。push:branches: [ main ]# GitHub上のActionsタブからこのワークフローを手動で実行できます。workflow_dispatch:# このジョブがリポジトリをクローンし、ページデプロイメントを作成することを許可します。permissions:contents: readpages: writeid-token: writejobs:build:runs-on: ubuntu-lateststeps:- name: Checkout your repository using gituses: actions/checkout@v5- name: Install, build, and upload your siteuses: withastro/action@v5# with:# path: . # リポジトリ内のAstroプロジェクトのルート位置です。(オプション)# node-version: 24 # サイトのビルドに使用するNodeのバージョンです。デフォルトは22です。(オプション)# package-manager: pnpm@latest # 依存関係のインストールとサイトのビルドに使用するNodeパッケージマネージャーです。ロックファイルに基づいて自動検出されます。(オプション)# build-cmd: pnpm run build # サイトをビルドするためのコマンドです。デフォルトでパッケージのbuildスクリプトを実行します。(オプション)# env:# PUBLIC_POKEAPI: 'https://pokeapi.co/api/v2' # 変数の値にはシングルクォートを使用してください。(オプション)deploy:needs: buildruns-on: ubuntu-latestenvironment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}steps:- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pages@v4Astro actionはオプションの入力を受け取ります。
with:行と使用したい入力のコメントアウトを外して設定します。サイトにパブリックな環境変数が必要な場合は、
env:行のコメントアウトを外して追加します。(プライベートな環境変数の追加については、シークレットの設定に関するGitHubドキュメントを参照してください。)公式のAstro actionは、ロックファイルをスキャンして使用しているパッケージマネージャー(
npm、yarn、pnpm、またはbun)を検出します。パッケージマネージャーが自動的に生成したpackage-lock.json、yarn.lock、pnpm-lock.yaml、またはbun.lockbファイルをリポジトリにコミットしてください。 -
Astroの設定ファイルで、
site(EN)にデプロイ先のGitHub URLを設定します。astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',})siteの値は以下のいずれかである必要があります:- ユーザー名に基づくURL:
https://<username>.github.io - GitHub Organizationのプライベートサイト用に自動生成されるランダムなURL:
https://<random-string>.pages.github.io/
- ユーザー名に基づくURL:
-
astro.config.mjsで、base(EN)の値を設定します(通常は必須です)。GitHub Pagesでは、ユーザー名とリポジトリ名に基づいたアドレス(例:
https://<username>/github.io/<my-repo>/)でサイトが公開されます。baseにリポジトリ名を設定することで、Astroがサイトのルートをデフォルトの/ではなく/my-repoとして認識できるようになります。リポジトリ名が<username>.github.io形式(例:https://github.com/username/username.github.io/)の場合は、この手順をスキップできます。baseをスラッシュで始まるリポジトリ名に設定します(例:/my-repo):astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://astronaut.github.io',base: '/my-repo',})この値を設定した場合、すべての内部リンクに
base値のプレフィックスを付ける必要があります:<a href="/my-repo/about">About</a>詳細は
baseの設定 (EN)を参照してください。 -
GitHubでリポジトリのSettings > Pagesに移動します。
-
サイトのSourceとしてGitHub Actionsを選択します。
Astroプロジェクトのリポジトリに変更をプッシュすると、GitHub ActionがGitHub URLに自動的にデプロイを行います。
GitHub URLをカスタムドメインに変更する
Section titled “GitHub URLをカスタムドメインに変更する”GitHub URLでGitHub Pagesにデプロイした後、カスタムドメインを設定できます。これにより、ユーザーはhttps://<username>.github.ioではなく、カスタムドメインhttps://example.comでサイトにアクセスできるようになります。
-
プロジェクトに
./public/CNAMEファイルを追加します。public/フォルダー内に、カスタムドメインを1行で指定するファイルを作成します:public/CNAME sub.example.comこれにより、サイトは
user.github.ioではなくカスタムドメインでデプロイされます。 -
Astroの設定ファイルで、
siteの値をカスタムドメインに更新します。baseの値は設定せず、存在する場合は削除してください:astro.config.mjs import { defineConfig } from 'astro/config'export default defineConfig({site: 'https://example.com',base: '/my-repo'}) -
必要に応じて、すべての内部リンクから
baseプレフィックスを削除します:<a href="/my-repo/about">About</a>
- GitHub Pages Deploymentスターターテンプレート
- Starlight Flexoki Theme(本番サイト)
- Expressive Code Color Chips(本番サイト)
- Starlight Markdown Blocks(本番サイト)