Skip to content

Commit

Permalink
fix: node-gyp대신 turbo 캐시 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
Fixtar committed Jan 5, 2025
1 parent 4ba41e2 commit f6c4f71
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 45 deletions.
44 changes: 14 additions & 30 deletions .github/workflows/back-media-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,40 +37,30 @@ jobs:
restore-keys: |
${{ runner.os }}-pnpm-
- name: 🔄 node-gyp 캐시 복원
# Turbo 캐시 복원
- name: 🔄 Turbo 캐시 복원
uses: actions/cache@v3
with:
path: |
~/.cache/node-gyp
~/.cache/node-gyp-binary
key: ${{ runner.os }}-node-gyp-${{ hashFiles('pnpm-lock.yaml') }}
.turbo/cache
key: ${{ runner.os }}-turbo-${{ hashFiles('turbo.json') }}
restore-keys: |
${{ runner.os }}-node-gyp-
${{ runner.os }}-turbo-
# 의존성 설치 및 빌드 후 node-gyp 캐시 저장
# 의존성 설치
- name: ⬇️ 의존성 설치
run: |
pnpm install --frozen-lockfile
# node-gyp 캐시를 actions 캐시에 다시 저장
if [ -d ~/.cache/node-gyp ]; then
echo "node-gyp cache exists, updating cache."
echo "Updating node-gyp cache in GitHub Actions."
echo "::set-output name=cache-paths::$(echo ~/.cache/node-gyp)"
else
echo "node-gyp cache does not exist."
fi
# 캐시 저장 단계
- name: 🔄 node-gyp 캐시 저장
if: steps.cache-paths.outputs.cache-paths != ''
uses: actions/cache@v3
with:
path: ~/.cache/node-gyp
key: ${{ runner.os }}-node-gyp-${{ hashFiles('pnpm-lock.yaml') }}
run: pnpm install --frozen-lockfile

- name: 📦 프로젝트 빌드
run: pnpm build:media

- name: 🔄 Turbo 캐시 저장
uses: actions/cache@v3
with:
path: |
.turbo/cache
key: ${{ runner.os }}-turbo-${{ hashFiles('turbo.json') }}

- name: 빌드 테스트
run: echo "test11"

Expand All @@ -91,12 +81,6 @@ jobs:
env:
SECRETS_CONTEXT: ${{ toJson(secrets) }}

# - name: 🐳 Docker 로그인
# uses: docker/login-action@v3
# with:
# registry: ${{secrets.DOCKER_REGISTRY_URL}}
# username: ${{secrets.DOCKER_REGISTRY_ACCESS_KEY}}
# password: ${{secrets.DOCKER_REGISTRY_SECRET_KEY}}
- name: 🐳 Docker 빌드 및 푸시
run: |
echo "Starting Docker build..."
Expand Down
33 changes: 18 additions & 15 deletions apps/media/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,59 +14,62 @@ ENV PATH="${PATH}:${PNPM_HOME}"

# 캐시 디렉토리 경로 설정
ENV PNPM_STORE_PATH="/pnpm/store"
ENV NODE_GYP_CACHE="/node-gyp-cache"
ENV TURBO_CACHE="/turbo-cache"

# 2. Builder 단계
FROM base AS builder

# Turbo CLI 설치
RUN pnpm install -g turbo@^2.2.3

# PNPM 및 node-gyp 캐시를 Docker 캐시 디렉토리에 연결
# PNPM 및 Turbo 캐시를 Docker 캐시 디렉토리에 연결
ARG PNPM_STORE_PATH=/pnpm/store
ARG NODE_GYP_CACHE=/node-gyp-cache
ENV NODE_GYP_CACHE=${NODE_GYP_CACHE}
ARG TURBO_CACHE=/turbo-cache
ENV PNPM_STORE_PATH=${PNPM_STORE_PATH}
ENV TURBO_CACHE=${TURBO_CACHE}

# 캐시 디렉토리 생성
RUN mkdir -p ${PNPM_STORE_PATH} ${NODE_GYP_CACHE}
RUN mkdir -p ${PNPM_STORE_PATH} ${TURBO_CACHE}

# 의존성 파일만 우선 복사하여 캐시 활용
COPY package.json pnpm-lock.yaml ./

# PNPM 및 node-gyp 캐시를 사용하여 의존성 설치
RUN pnpm install --frozen-lockfile --store=${PNPM_STORE_PATH} --cache=${NODE_GYP_CACHE}
# PNPM 및 Turbo 캐시를 사용하여 의존성 설치
RUN pnpm install --frozen-lockfile --store=${PNPM_STORE_PATH}

# 소스 파일 전체 복사
COPY . .

# Turbo Prune으로 최소화된 결과 생성
RUN turbo prune @app/media --docker
RUN turbo prune --scope=@app/media --docker

# 3. Runner 단계
FROM base AS runner

# 작업 디렉토리 설정
WORKDIR /app

# PNPM 및 node-gyp 캐시를 Docker 캐시 디렉토리에 연결
# PNPM 및 Turbo 캐시를 Docker 캐시 디렉토리에 연결
ARG PNPM_STORE_PATH=/pnpm/store
ARG NODE_GYP_CACHE=/node-gyp-cache
ENV NODE_GYP_CACHE=${NODE_GYP_CACHE}
ARG TURBO_CACHE=/turbo-cache
ENV PNPM_STORE_PATH=${PNPM_STORE_PATH}
ENV TURBO_CACHE=${TURBO_CACHE}

# 캐시 디렉토리 생성
RUN mkdir -p ${PNPM_STORE_PATH} ${NODE_GYP_CACHE}
RUN mkdir -p ${PNPM_STORE_PATH} ${TURBO_CACHE}

# Turbo Prune 결과 복사
COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml

# PNPM 및 node-gyp 캐시를 사용하여 의존성 설치
RUN pnpm install --frozen-lockfile --store=${PNPM_STORE_PATH} --cache=${NODE_GYP_CACHE}
# PNPM 및 Turbo 캐시를 사용하여 의존성 설치
RUN pnpm install --frozen-lockfile --store=${PNPM_STORE_PATH}

# 전체 소스 복사 및 빌드
COPY --from=builder /app/out/full/ .

RUN pnpm build:media
# Turbo 캐시를 사용하여 빌드
RUN turbo run build --cache-dir=${TURBO_CACHE}

# 환경 파일 복사
COPY --from=builder /app/apps/media/.env /app/apps/media/dist/.env
Expand Down

0 comments on commit f6c4f71

Please sign in to comment.