Skip to content

Commit d53a4d5

Browse files
authored
ci: 웹 이미지 빌드 시 공개 분석 환경변수 주입 로직 추가 (#62)
deploy 워크플로우에서 CLOUD_RUN_ENV_WEB 값을 파싱해 NEXT_PUBLIC_* 빌드 인자로 전달하도록 변경 필수 값 누락 시 빌드를 즉시 실패 처리해 잘못된 이미지 배포를 방지 web Dockerfile에 ARG/ENV 설정을 추가해 Next.js 빌드 시점 환경변수를 안정적으로 반영
1 parent e655acf commit d53a4d5

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

.github/workflows/deploy.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,23 @@ jobs:
5252
docker push ${IMAGE}:latest
5353
5454
- name: Build and push Web image
55+
env:
56+
CLOUD_RUN_ENV_WEB: ${{ secrets.CLOUD_RUN_ENV_WEB }}
5557
run: |
5658
SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
5759
IMAGE="${{ env.GCP_REGION }}-docker.pkg.dev/${{ env.GCP_PROJECT_ID }}/${{ env.AR_REPO }}/lms-web"
58-
docker build -f web/Dockerfile -t ${IMAGE}:${SHORT_SHA} -t ${IMAGE}:latest ./web
60+
NEXT_PUBLIC_ANALYTICS_PROVIDER=$(echo "$CLOUD_RUN_ENV_WEB" | awk -F': ' '/^NEXT_PUBLIC_ANALYTICS_PROVIDER:/{gsub(/"/,"",$2);print $2}')
61+
NEXT_PUBLIC_GA4_MEASUREMENT_ID=$(echo "$CLOUD_RUN_ENV_WEB" | awk -F': ' '/^NEXT_PUBLIC_GA4_MEASUREMENT_ID:/{gsub(/"/,"",$2);print $2}')
62+
63+
if [ -z "${NEXT_PUBLIC_ANALYTICS_PROVIDER}" ] || [ -z "${NEXT_PUBLIC_GA4_MEASUREMENT_ID}" ]; then
64+
echo "ERROR: NEXT_PUBLIC_ANALYTICS_PROVIDER 또는 NEXT_PUBLIC_GA4_MEASUREMENT_ID 값이 비어 있습니다."
65+
exit 1
66+
fi
67+
68+
docker build -f web/Dockerfile \
69+
--build-arg NEXT_PUBLIC_ANALYTICS_PROVIDER="${NEXT_PUBLIC_ANALYTICS_PROVIDER}" \
70+
--build-arg NEXT_PUBLIC_GA4_MEASUREMENT_ID="${NEXT_PUBLIC_GA4_MEASUREMENT_ID}" \
71+
-t ${IMAGE}:${SHORT_SHA} -t ${IMAGE}:latest ./web
5972
docker push ${IMAGE}:${SHORT_SHA}
6073
docker push ${IMAGE}:latest
6174

web/Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ RUN if [ -f package-lock.json ]; then npm ci --no-audit; else npm install --no-a
99

1010
# 소스 복사 및 빌드
1111
COPY . .
12+
ARG NEXT_PUBLIC_ANALYTICS_PROVIDER
13+
ARG NEXT_PUBLIC_GA4_MEASUREMENT_ID
14+
ENV NEXT_PUBLIC_ANALYTICS_PROVIDER=${NEXT_PUBLIC_ANALYTICS_PROVIDER}
15+
ENV NEXT_PUBLIC_GA4_MEASUREMENT_ID=${NEXT_PUBLIC_GA4_MEASUREMENT_ID}
1216
RUN npm run build
1317

1418
# Runtime stage: standalone 출력 사용

0 commit comments

Comments
 (0)