Skip to main content

GitHub ページでのカスタム ワークフローの使用

ワークフロー ファイルを作成するか、定義済みのワークフローから選択することで、 GitHub Actions と GitHub Pages を使用できます。

この機能を使用できるユーザーについて

GitHub Pagesは、パブリック・リポジトリのGitHub Freeと組織用のGitHub Free、パブリック・リポジトリとプライベート・リポジトリのGitHub Pro、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Serverで利用できます。

カスタム ワークフローについて

カスタム ワークフローを使用すると、GitHub Pagesを使用してGitHub Actionsサイトを構築できます。 その場合でも、使いたいブランチをワークフロー ファイルで選択できますが、カスタム ワークフローを使うとさらに多くのことができます。 カスタム ワークフローを使い始めるには、最初に現在のリポジトリに対してそれを有効にする必要があります。 詳しくは、「GitHub Pages サイトの発行ソースの構成」をご覧ください。

configure-pages アクションを構成する

GitHub Actionsでは、GitHub Pages アクションを使用してconfigure-pagesを使用できます。これにより、Web サイトに関するさまざまなメタデータを収集することもできます。 詳細については、「configure-pages アクション」を参照してください。

アクションを使うには、このスニペットを目的のワークフローの jobs の下に配置します。

- name: Configure GitHub Pages
  uses: actions/configure-pages@v5

このアクションは、任意の静的サイト ジェネレーターから GitHub Pagesへのデプロイをサポートするのに役立ちます。 このプロセスの繰り返しを減らすには、最も広く使われているいくつかの静的サイト ジェネレーターでワークフロー テンプレートを使用できます。 詳しくは、「ワークフロー テンプレートの使用」をご覧ください。

upload-pages-artifact アクションを構成する

upload-pages-artifact アクションを使うと、成果物をパッケージ化してアップロードできます。 GitHub Pages成果物は、1 つのgzip ファイルを含む圧縮tarアーカイブである必要があります。 tar ファイルのサイズは 10 GB 未満である必要があり、シンボリック リンクやハード リンクを含めることはできません。 詳細については、「upload-pages-artifact アクション」を参照してください。

現在のワークフローでアクションを使うには、このスニペットを jobs の下に配置します。

- name: Upload GitHub Pages artifact
  uses: actions/upload-pages-artifact@v2

GitHub Pagesアーティファクトのデプロイ

deploy-pages アクションは、成果物のデプロイに必要なセットアップを処理します。 適切な機能を確保するには、次の要件を満たす必要があります。

  • ジョブには、少なくとも pages: writeid-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@v3
# ...

個別のビルド ジョブとデプロイ ジョブをリンクする

build ジョブと deploy ジョブを 1 つのワークフロー ファイルでリンクし、同じ結果を得るために 2 つの個別のファイルを作成する必要がないようにできます。 ワークフロー ファイルの作業を始めるには、jobs でジョブを実行するように builddeploy ジョブを定義できます。

# ...

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - 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@v3
# ...

場合によっては、すべてを 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@v6
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - 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@v3

# ...

異なるランナーで、順番に、または並列に実行するように、ジョブを定義できます。 詳しくは、「ワークフローの目的を選択」をご覧ください。