From d9902b14d560e16f922cb24104c40513421c86d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Fri, 20 Mar 2026 08:09:36 +0900 Subject: [PATCH] =?UTF-8?q?perf:=20[deploy]=20rsync=20=EC=A0=84=EC=86=A1?= =?UTF-8?q?=EB=9F=89=204.1GB=E2=86=92100MB=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .next/cache 제외 (서버 런타임에 불필요, 3.1GB 절감) - node_modules rsync 대신 서버에서 npm install (931MB 절감) - package-lock.json 추가 전송 (서버 install 정확성) - 예상: rsync 130초 → ~30초 --- Jenkinsfile | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2755de86..00722f21 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -122,10 +122,11 @@ pipeline { sh """ rsync -az --delete \ --exclude='.git' --exclude='.env*' --exclude='ecosystem.config.*' \ - .next package.json next.config.ts public node_modules \ + --exclude='.next/cache' \ + .next package.json package-lock.json next.config.ts public \ ${DEPLOY_USER}@114.203.209.83:/home/webservice/react/ scp .env.production ${DEPLOY_USER}@114.203.209.83:/home/webservice/react/.env.production - ssh ${DEPLOY_USER}@114.203.209.83 'cd /home/webservice/react && pm2 restart sam-react' + ssh ${DEPLOY_USER}@114.203.209.83 'cd /home/webservice/react && npm install --prefer-offline --no-audit --no-fund && pm2 restart sam-react' """ } } @@ -144,10 +145,12 @@ pipeline { sh """ ssh ${DEPLOY_USER}@${PROD_SERVER} 'mkdir -p /home/webservice/react-stage/releases/${RELEASE_ID}' rsync -az --delete \ - .next package.json next.config.ts public node_modules \ + --exclude='.next/cache' \ + .next package.json package-lock.json next.config.ts public \ ${DEPLOY_USER}@${PROD_SERVER}:/home/webservice/react-stage/releases/${RELEASE_ID}/ scp .env.production ${DEPLOY_USER}@${PROD_SERVER}:/home/webservice/react-stage/releases/${RELEASE_ID}/.env.production ssh ${DEPLOY_USER}@${PROD_SERVER} ' + cd /home/webservice/react-stage/releases/${RELEASE_ID} && npm install --prefer-offline --no-audit --no-fund && ln -sfn /home/webservice/react-stage/releases/${RELEASE_ID} /home/webservice/react-stage/current && cd /home/webservice && pm2 reload sam-front-stage 2>/dev/null || pm2 start react-stage/current/node_modules/.bin/next --name sam-front-stage -- start -p 3100 && cd /home/webservice/react-stage/releases && ls -1dt */ | tail -n +4 | xargs rm -rf 2>/dev/null || true @@ -197,10 +200,12 @@ pipeline { sh """ ssh ${DEPLOY_USER}@${PROD_SERVER} 'mkdir -p /home/webservice/react/releases/${RELEASE_ID}' rsync -az --delete \ - .next package.json next.config.ts public node_modules \ + --exclude='.next/cache' \ + .next package.json package-lock.json next.config.ts public \ ${DEPLOY_USER}@${PROD_SERVER}:/home/webservice/react/releases/${RELEASE_ID}/ scp .env.production ${DEPLOY_USER}@${PROD_SERVER}:/home/webservice/react/releases/${RELEASE_ID}/.env.production ssh ${DEPLOY_USER}@${PROD_SERVER} ' + cd /home/webservice/react/releases/${RELEASE_ID} && npm install --prefer-offline --no-audit --no-fund && ln -sfn /home/webservice/react/releases/${RELEASE_ID} /home/webservice/react/current && cd /home/webservice && pm2 reload sam-front && cd /home/webservice/react/releases && ls -1dt */ | tail -n +6 | xargs rm -rf 2>/dev/null || true