next.js CI 빌드시 public 포함 안되는 문제

Yi Kanghoon·2023년 2월 13일
0

개요

NKTimes에서 정적이미지로 넣어둔 학교 로고가 정상적으로 렌더링되지 않음 + favicon도 정상적으로 나오지 않음

원인

https://stackoverflow.com/questions/69352108/next-js-build-on-gitlab-does-not-build-image-cache-from-public-folder
.next/cache/images/는 사실 빌드 과정에서 만들어지는게 아니라 첫 런타임에 캐시되면서 만들어진다....
그런데 기존 deploy.yml

 - name: build server files
        working-directory: ./
        run: |
          yarn
          yarn build
      - name: zip file
        run: zip -r nktimes-frontend.zip ./.next ./scripts ./appspec.yml ./.env ./package.json

      - name: AWS configure credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-2

와 같이 구성되어 있었고, 실제로 돌아가는 서버에는 public/이 전달되지 않아 캐싱 자체가 되지 못했다.

해결

간단하게.... 압축과정에서 public/을 포함하도록 yml을 수정했다....

후회

로컬에서 빌드시에는 당연히 해당 public/이 같은 디렉토리에 있었기에 정상 빌드(사실 애초에 빌드는 정상이긴 했다)되는 것처럼 보였고, 서버에서 돌아갈 때만 문제가 생긴다고 생각했다. 그런데 이제 생각해보면 항상 빌드를 한 뒤에 돌리고 .next/를 확인했던 것 같다. 그렇다보니 문제가 확인이 되지 않았고, 2주가 넘는 시간동안(...) 픽스를 못하고 있었다. 앞으로 테스트 할 때는 최소 조건에서 테스트하는 습관을 들이도록 하자.........

profile
Full 'Snack' Developer

0개의 댓글