박종훈 기술블로그

[pnpm] firebase hosting과 github action 연결하기

    이 포스트는 pnpm 기반의 프로젝트에서 firebase hosting과 github action 연결하는 법에 대해서 설명한다.

    기본적으로 firebase hosting 에서는 github action과 연결을 제공한다.

    GitHub pull 요청을 통해 실시간 및 미리보기 채널에 배포

    이 방법을 통해 생성을 하게 되면 github workflow 파일이 생성된다.
    (firebase-hosting-merge.yml, firebase-hosting-pull-request.yml)

    내용은 다음과 같다. (jobs 부분만 보면 된다. 두 파일 다 원리는 동일하기 때문에 firebase-hosting-merge.yml 을 기준으로 설명한다.)

    # This file was auto-generated by the Firebase CLI
    # https://github.com/firebase/firebase-tools
    
    name: Deploy to Firebase Hosting on merge
    'on':
      push:
        branches:
          - main
    jobs:
      build_and_deploy:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - run: npm ci && npm run build
          - uses: FirebaseExtended/action-hosting-deploy@v0
            with:
              repoToken: '$'
              firebaseServiceAccount: '$'
              channelId: live
              projectId: your_project_id

    이 상태에서 pnpm을 통해 install 과 build를 진행하려면 다음과 같이 수정해주면 된다.

    # This file was auto-generated by the Firebase CLI
    # https://github.com/firebase/firebase-tools
    
    name: Deploy to Firebase Hosting on merge
    "on":
      push:
        branches:
          - main
    jobs:
      build_and_deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout
            uses: actions/checkout@v3
    
          - name: Setup pnpm
            uses: pnpm/action-setup@v2
            with:
              version: 8
    
          - name: install dependencies and build
            run: pnpm install --frozen-lockfile && pnpm run build
    
          - name: deploy to firebase
            uses: FirebaseExtended/action-hosting-deploy@v0
            with:
              repoToken: "$"
              firebaseServiceAccount: "$"
              channelId: live
              projectId: your_project_id

    코드를 수정하여 반영하면 정상적으로 빌드되고 반영되는 것을 확인할 수 있다.
    github action

    firebase hosting deploy

    categories: 개발

    tags: github , github action , pnpm , ci , firebase , firebase deploy , firebase hosting , 배포 , deploy , hosting , 호스팅