From 113a97bf67b7a6c8770e7d309ada3f8a97ebbfce Mon Sep 17 00:00:00 2001 From: Hyeonjun0527 Date: Mon, 18 May 2026 03:24:48 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=9A=B4=EC=98=81=20=ED=94=84=EB=A1=A0?= =?UTF-8?q?=ED=8A=B8=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=A0=84=EB=8B=AC=20?= =?UTF-8?q?=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: OmX --- .github/workflows/deploy-prod.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml index 3d40ceee1..5499beb40 100644 --- a/.github/workflows/deploy-prod.yml +++ b/.github/workflows/deploy-prod.yml @@ -113,7 +113,7 @@ jobs: runs-on: ubuntu-latest needs: build-and-push-image env: - FRONTEND_IMAGE: ${{ needs.build-and-push-image.outputs.frontend_image }} + FRONTEND_IMAGE: zerooneitkr/zeroone-frontend:${{ needs.build-and-push-image.outputs.frontend_version }}-${{ needs.build-and-push-image.outputs.frontend_commit }} RELEASE_ID: ${{ needs.build-and-push-image.outputs.release_id }} DEPLOYED_AT: ${{ needs.build-and-push-image.outputs.deployed_at }} FRONTEND_COMMIT: ${{ needs.build-and-push-image.outputs.frontend_commit }} @@ -247,15 +247,16 @@ jobs: - name: Deploy frontend image to production server run: | set -euo pipefail - sshpass -p '${{ secrets.SSH_PASSWORD }}' ssh ssh.zeroone.it.kr bash << 'EOF' - set -e + : "${FRONTEND_IMAGE:?FRONTEND_IMAGE is required}" + sshpass -p '${{ secrets.SSH_PASSWORD }}' ssh ssh.zeroone.it.kr \ + "FRONTEND_IMAGE='$FRONTEND_IMAGE' bash -s" << 'EOF' + set -euo pipefail SUDO_PASSWORD='${{ secrets.SSH_PASSWORD }}' - FRONTEND_IMAGE='${{ needs.build-and-push-image.outputs.frontend_image }}' + : "${FRONTEND_IMAGE:?FRONTEND_IMAGE is required}" - echo "사용하지 않는 컨테이너, 이미지, 네트워크 정리 중 (볼륨제외)..." - echo "$SUDO_PASSWORD" | sudo -S docker stop frontend-prod || true - echo "$SUDO_PASSWORD" | sudo -S docker rm frontend-prod || true - echo "$SUDO_PASSWORD" | sudo -S docker system prune -a -f + echo "사용하지 않는 이미지, 네트워크 정리 중 (실행 중 컨테이너 보존, 볼륨 제외)..." + echo "$SUDO_PASSWORD" | sudo -S docker image prune -f || true + echo "$SUDO_PASSWORD" | sudo -S docker network prune -f || true cd ~/front/study-platform-client-prod || { echo "디렉토리가 없습니다. 생성합니다..." @@ -288,16 +289,17 @@ jobs: restart: unless-stopped COMPOSE - echo "기존 컨테이너 완전 제거" + echo "도커 이미지 pull: $FRONTEND_IMAGE" + echo "$SUDO_PASSWORD" | sudo -S docker pull "$FRONTEND_IMAGE" + + echo "기존 컨테이너 교체" echo "$SUDO_PASSWORD" | sudo -S docker compose -f docker-compose.prod.yml down || true echo "$SUDO_PASSWORD" | sudo -S docker stop frontend-prod || true echo "$SUDO_PASSWORD" | sudo -S docker rm frontend-prod || true - echo "도커 이미지 pull: $FRONTEND_IMAGE" - echo "$SUDO_PASSWORD" | sudo -S docker pull "$FRONTEND_IMAGE" - echo "도커 컴포즈 재시작" echo "$SUDO_PASSWORD" | sudo -S docker compose -f docker-compose.prod.yml up -d + echo "$SUDO_PASSWORD" | sudo -S docker system prune -f || true echo "운영 서버 배포 완료" EOF