カスタム ワークフローについて
カスタム ワークフローを使うと、GitHub Actions を使って GitHub Pages サイトを構築できます。 その場合でも、使いたいブランチをワークフロー ファイルで選択できますが、カスタム ワークフローを使うとさらに多くのことができます。 カスタム ワークフローを使い始めるには、最初に現在のリポジトリに対してそれを有効にする必要があります。 詳しくは、「GitHub Pages サイトの公開元を設定する」を参照してください。
configure-pages
アクションを構成する
GitHub Actions を使うと、configure-pages
アクションを通じて GitHub Pages を使用できます。これにより、Web サイトに関するさまざまなメタデータを収集することもできます。 詳細については、「configure-pages
アクション」を参照してください。
アクションを使うには、このスニペットを目的のワークフローの jobs
の下に配置します。
- name: Configure GitHub Pages
uses: actions/configure-pages@v3
このアクションは、任意の静的サイト ジェネレーターから GitHub Pages へのデプロイをサポートするのに役立ちます。 このプロセスの繰り返しを減らすには、最も広く使われているいくつかの静的サイト ジェネレーターでスターター ワークフローを使用できます。 詳しくは、「スターター ワークフローの使用」を参照してください。
upload-pages-artifact
アクションを構成する
upload-pages-artifact
アクションを使うと、成果物をパッケージ化してアップロードできます。 GitHub Pages 成果物は、1 つの tar
ファイルを含む圧縮された gzip
アーカイブである必要があります。 tar
ファイルのサイズは 10 GB 未満である必要があり、シンボリック リンクやハード リンクを含めることはできません。 詳細については、「upload-pages-artifact
アクション」を参照してください。
現在のワークフローでアクションを使うには、このスニペットを jobs
の下に配置します。
- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@v1
GitHub Pages の成果物をデプロイする
deploy-pages
アクションは、成果物のデプロイに必要なセットアップを処理します。 適切な機能を確保するには、次の要件を満たす必要があります。
- ジョブには、少なくとも
pages: write
とid-token: write
のアクセス許可が必要です。 needs
パラメーターに、ビルド ステップのid
を設定する必要があります。 このパラメーターを設定しないと、独立したデプロイが作成されていない成果物を継続的に検索するようになる可能性があります。- ブランチとデプロイメントの保護ルールを適用するには、
environment
を確立する必要があります。 既定の環境はgithub-pages
です。 - ページの URL を出力として指定するには、
url:
フィールドを使います。
詳細については、「deploy-pages
アクション」を参照してください。
...
jobs:
deploy:
permissions:
contents: read
pages: write
id-token: write
runs-on: ubuntu-latest
needs: jekyll-build
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
steps:
- name: Deploy artifact
id: deployment
uses: actions/deploy-pages@v1
...
個別のビルド ジョブとデプロイ ジョブをリンクする
build
ジョブと deploy
ジョブを 1 つのワークフロー ファイルでリンクし、同じ結果を得るために 2 つの個別のファイルを作成する必要がないようにできます。 ワークフロー ファイルの作業を始めるには、jobs
でジョブを実行するように build
と deploy
ジョブを定義できます。
...
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
# Deployment job
deploy:
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
...
場合によっては、すべてを 1 つのジョブに組み合わせることができます (特に、ビルド プロセスが必要ない場合)。 そうすれば、デプロイ ステップだけに集中できます。
...
jobs:
# Single deploy job no building
deploy:
environment:
name: github-pages
url: ${{steps.deployment.outputs.page_url}}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload Artifact
uses: actions/upload-pages-artifact@v2
with:
# upload entire directory
path: '.'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
...
異なるランナーで、順番に、または並列に実行するように、ジョブを定義できます。 詳しくは、「ジョブの使用」を参照してください。