목차

1. 문제점

2. 원인 분석 및 결과

3. 문제 해결


1. 문제점

어느날 갑지가 원래 돌아가던 Gitlab CICD pipeline이 정상적으로 동작하지 않음

npm install -g @sap/cds-dk에서 계속 멈춰 있어 개발서버가 정상적으로 배포되지 않음

2. 원인 분석 및 결과

문제점을 해결하기 위해 아래와 같이 기본 run 명령어에 –verbose 옵션을 추가하였다.

RUN npm install -global @sap/cds-dk --verbose

확인 결과, 패키지 설치에서 멈춰 있는 현상을 발견하였다.

그리고 10분 정도 대기해보니 아래와 같은 로그로 원인을 유추 할 수 있었다.

원인은 node 버전이 안 맞는 것이다.

고로 npm install이 정상적으로 실행되지 않았다.

3. 문제 해결

어디서 docker 컨테이너 내 node 버전을 설정해주는 지를 찾아야 된다.

.gitlab-ci.yml에서 빌드 시 사용하는 변수를 설정하는 부분이 있습니다.

// .gitlab-ci.yml
variables:
  DOCKER_BUILDKIT: 1 # BuildKit 활성화
  IMAGE_NAME: $NEXUS3_PRIVATE_HOST/$APP_NAME:$APP_VERSION
  BUILD_ARG_NODE_IMAGE: --build-arg node_image=$ARG_NODE_IMAGE
  BUILD_ARG_EXPOSE_PORT: --build-arg expose_port=$ARG_EXPOSE_PORT
  BUILD_ARGS: $BUILD_ARG_NODE_IMAGE $BUILD_ARG_EXPOSE_PORT

--build-arg를 사용하여 변수 node_image 설정합니다.

변수 $ARG_NODE_IMAGE는 gitlab Settings > CI/CID > Variables에서 설정합니다.

--build-arg로 node_image 변수를 build 변수로 설정하였기 때문에 아래 Dockerfile에서

ARG node_image로 Dockerfile 내 사용이 가능합니다.

ARG node_image
ARG expose_port
FROM ${node_image}

변수 $ARG_NODE_IMAGE 값을 확인해보니, node:latest로 되어 있었습니다.

latest 태그로 배포하는 행위는 절대 하지 말아야된다는 교훈을 얻습니다.

node:latest를 node:20.15.0으로 변경하였습니다.

노드 버전을 fix하여 문제를 해결했습니다.