Jaeilit

스토리북 chromatic action error 본문

TIL

스토리북 chromatic action error

Jaeilit 2024. 3. 8. 09:36
728x90

1. 현상

 

스토리북 크로마틱 ci cd 를 사용하려고 문서를 보고 따라했는데 깃 액션에서 에러가 발생했다.

 

https://storybook.js.org/tutorials/intro-to-storybook/react/ko/deploy/

 

Storybook Tutorials

Learn how to develop UIs with components and design systems. Our in-depth frontend guides are created by Storybook maintainers and peer-reviewed by the open source community.

storybook.js.org

 

에러 내용

non-zero exit code

액션에서 정의해놓은 에러이외로 예기치않게 프로세스가 종료됬다는 의미이다.

 

2. 원인

자세히보면 Run yarn 이 보인다. 빌드를 하기 위해 yarn 패키지를 설치하는건데

이미 프로덕트에는 pnpm 을 사용하고있고 액션에서 yarn 을 패키지 매니저로 사용한다고해도 yarn.lcok 파일이 없기 때문에 에러가 날수 밖에 없다. npm 을 사용한다하더라도 마찬가지로 package.lock.json 이 없으니 똑같이 에러가 날 것이다.

 

3. 시도

 

pnpm install 하여 pnpm 을 패키지 매니저로 사용하게끔 설치해주었다.

그러나 보기와 같이 pnpm command not found 에러를 냈는데

pnpm 이 없다는 이야기이다.

 

pnpm install 로 설치할게요 -> pnpm 명령어가 없는데..??

pnpm 자체가 설치가 안되서 pnpm cli 을 사용못한다는 뜻,

 

4. 해결

해결 방법은 pnpm 을 설치해주면 된다.

https://github.com/pnpm/action-setup/tree/v3/

 

GitHub - pnpm/action-setup: Install pnpm package manager

Install pnpm package manager. Contribute to pnpm/action-setup development by creating an account on GitHub.

github.com

pnpm 을 설치해주는 action 이 있다.

 

문서대로 그냥 pnpm 을 사용해도 되지만 마지막 단락에 캐시사용하는 코드에서 노드는 사용하지 않으므로 제거하고 사용했다.

on:
  - push
  - pull_request

jobs:
  cache-and-install:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - uses: pnpm/action-setup@v3
        name: Install pnpm
        with:
          version: 8
          run_install: false

      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v3
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install dependencies
        run: pnpm install

캐시사용하는 액션 with 부분을 보면 대충 pnpm lcok 파일을 변경을 감지해서 캐시사용 유무를 정하는듯하다.

 

 

5. 전체코드

# Workflow name
name: "Chromatic Deployment"

# Event for the workflow
on: push

# List of jobs
jobs:
  chromatic:
    # Operating System
    runs-on: ubuntu-latest
    # Job steps
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: pnpm/action-setup@v3
        name: Install pnpm
        with:
          version: 8
          run_install: false

      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v3
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install Dependencies
        run: pnpm install

      - name: Publish to Chromatic
        uses: chromaui/action@latest
        with:
          #👇 Chromatic projectToken, see https://storybook.js.org/tutorials/intro-to-storybook/react/ko/deploy/ to obtain it
          projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
          zip: true

 

728x90