5
4

GitHub Actionsを使ってStorybookをGitHub Pagesにデプロイしよう!

Last updated at Posted at 2024-02-15

概要

StorybookをGitHub Actionsを使ってGitHub Pagesにデプロイする方法について解説します

前提

  • GitHub Actionsに関する基礎知識を有している
  • コンポーネントとStoryを作成済

ディレクトリ構成

ファイル構成は以下のとおりです

❯ tree
.
├── .github
│   └── workflows
│       └── deploy-storybook.yml
└── application
    ├── storybook-static
    └── package.json

実装するファイル一覧

  • deploy-storybook.yml
  • package.json

Storybookの設定

package.jsonにstorybook buildコマンドを実行できるよう修正します
コマンドを実行することでstorybook-staticディレクトリが作成され、Storybookを表示するための静的ファイルが生成されます

package.json

  "scripts": {
    "build-storybook": "storybook build",
  },

ワークフローの作成

StorybookをGitHub Pagesにデプロイするワークフローを作成します
まず、Node.jsのセットアップを行います

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: ${{ env.WORKING_DIRECTORY }}/package.json
          cache: 'npm'
          cache-dependency-path: '**/package-lock.json'
npm ci

コマンドで必要なパッケージをインストールした後に

npm run build-storybook

を実行してStorybookを表示させるために静的ファイルを作成します
その後、storybook-static内の静的ファイルをGitHub Actions公式のArtifactのactionを使ってArtifact内に格納します
Artifact内の静的ファイルをGitHub Actions公式のdeploy-pagesを使ってGitHub Pages上にデプロイします

deploy-storybook.yml
name: Deploy Storybook to GitHub Pages

on:
  push:
    branches:
      - develop
      - main

env:
  WORKING_DIRECTORY: application

jobs:
  build:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ${{ env.WORKING_DIRECTORY }}
    steps:
      - name: Chekcout code
        uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: ${{ env.WORKING_DIRECTORY }}/package.json
          cache: 'npm'
          cache-dependency-path: '**/package-lock.json'
      - name: Install Node Dependencies
        run: npm ci
      - name: Build storybook
        run: npm run build-storybook
      - name: Upload Documents
        uses: actions/upload-pages-artifact@v3
        with:
          # 絶対パスを指定
          path: ${{ env.WORKING_DIRECTORY }}/storybook-static

  # Deploy the artifact to GitHub pages.
  # This is a separate job so that only actions/deploy-pages has the necessary permissions.
  deploy:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      pages: write
      id-token: write
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - id: deployment
        uses: actions/deploy-pages@v4

GitHub Pagesの設定

Build and deploymentの箇所をGitHub Actionsに設定します

スクリーンショット 2024-02-15 16.00.44.png

実際にデプロイしてみよう!

以下のようにワークフローが成功し、Storybookの画面をGitHub Pages上で表示できたら成功です

スクリーンショット 2024-02-15 16.25.45.png

スクリーンショット 2024-02-15 16.42.56.png

スクリーンショット 2024-02-15 16.19.15.png

参考

5
4
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
5
4