[Github Action + ECS] info No lockfile found.

shleecloud·2023년 7월 2일
0

들어가며

어느날 잘 동작하던 배포 과정이 깨졌다. 당장 배포해야 되는 내용이 있어서 급하게 조치해야 했다. 그 과정에서 찬찬히 살펴보지 못하고 바보같은 실수를 해서 이렇게 남긴다.

증상

Github Action 과정에서 elastic 관련 버전 이슈가 발생했다. 기존에 쓰던 버전이 오래되어 의존성 걸린 패키지가 관리되지 않는 경고메시지가 나오긴 했는데 갑자기 이렇게 실패하는건 이상했다.

Step 1/10 : FROM node:XX as build-stage
 ---> 1d12470fa662
Step 2/10 : ARG ENV=dev
 ---> Running in 59eaeb709d5f
Removing intermediate container 59eaeb709d5f
 ---> 922d5a269865
Step 3/10 : ENV env=$ENV
 ---> Running in 999d921568ff
Removing intermediate container 999d921568ff
 ---> 65dcefa0edd6
Step 4/10 : WORKDIR /usr/src/app
 ---> Running in 3f662e2f3019
Removing intermediate container 3f662e2f3019
 ---> fc7256219f3d
Step 5/10 : COPY package*.json ./
 ---> 99b48c69cac3
Step 6/10 : RUN yarn install --ignore-scripts
 ---> Running in a730ec14bc8e
yarn install v1.22.19
info No lockfile found. <<<<<<<<<<<<<<<<< 여기서 발생
[1/4] Resolving packages...
warning @nestjs/platform-express > multer@1.4.2: Multer 1.x is affected by CVE-2022-24434. This is fixed in v1.4.4-lts.1 which drops support for versions of Node.js before 6. Please upgrade to at least Node.js 6 and version 1.4.4-lts.1 of Multer. If you need support for older versions of Node.js, we are open to accepting patches that would fix the CVE on the main 1.x release line, whilst maintaining compatibility with Node.js 0.10.
...


$ TZ=Asia/Seoul NODE_ENV=dev nest build
node_modules/@elastic/elasticsearch/api/requestParams.d.ts:2632:10 - error TS2304: Cannot find name 'integer'.

2632   size?: integer;
              ~~~~~~~
node_modules/@elastic/elasticsearch/api/requestParams.d.ts:2636:12 - error TS2304: Cannot find name 'integer'.

2636   offset?: integer;
                ~~~~~~~

Found 2 error(s).

error Command failed with exit code 1.

해결

컨테이너를 만들 때 yarn.lock 파일을 포함하여 설치하게 수정했다.

과정

  1. 처음엔 Github Action만 보았다. (지금 보니 에러메시지에 답이 있었다)
  2. 설치 과정을 살펴보던 중 Github Action에서 패키지 설치가 진행되지 않는 사실을 깨달았다.
  3. 패키지 설치는 ECS 컨테이너를 만드는 액션에서 설치를 진행하는데, package*.json 파일만 복사하고 yarn.lock 파일을 복사하지 않았다.

DockerFile

FROM node:XX as build-stage
ARG ENV=dev
ENV env=$ENV

# 앱 디렉터리 생성
WORKDIR /usr/src/app

# COPY package*.json ./ # <<<< 여기서 문제 발생
COPY . .
RUN yarn install --ignore-scripts


# 앱 소스 추가
RUN yarn build:${env}
# COPY . . # <<<< 이 설정의 위치를 yarn install 위로 올렸다

EXPOSE 3001
CMD ["sh", "-c", "yarn start:${env}"]
profile
블로그 옮겼습니다. https://shlee.cloud

0개의 댓글