From 22a831965b9fc1662a7a3ed65f10f03232da25c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=9E=AC=EC=A4=91?= <126754298+m-a-king@users.noreply.github.com> Date: Tue, 20 Oct 2026 17:56:44 +0900 Subject: [PATCH] =?UTF-8?q?infra:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC=20=EA=B3=B5=EC=9A=A9=20=EB=B8=94=EB=A1=9D=20?= =?UTF-8?q?=EC=9D=B4=EA=B4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 인라인 prune -af·df 를 prune_images.sh 호출로 교체 - 원인: 세 repo 가 정리를 각자 두다 정책이 셋으로 갈림. renderer 가 #336 과 같은 실패를 2026-09-13 에 다시 냄 - 결과: 동작 동일. pull 앞 정리 위치 유지 - 정리 후 여유 10GB 미만이면 pull 앞에서 배포 중단 - 이전: 공간 부족 시 pull 이 failed to extract layer 로 중단 - 결과: 최근 배포 로그의 정리 직후 여유 dev 14G·prod 16G - 참조: 기준값은 블록 기본값 (TeamPiKi/infra#97) - 배포 파일 업로드 목록에 prune_images.sh 추가 --- .github/workflows/deploy.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a0686d2e..0e05c3e4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -301,6 +301,7 @@ jobs: shared-infra/blocks/slot_decide.sh \ shared-infra/blocks/slot_switch.sh \ shared-infra/blocks/deploy_slot.sh \ + shared-infra/blocks/prune_images.sh \ shared-infra/blocks/ssm_env.sh \ "$HOST:/tmp/piki-deploy/" scp shared-infra/blocks/alloy/config.alloy \ @@ -535,13 +536,8 @@ jobs: docker run --rm --network host "$AWSCLI_IMAGE" ecr get-login-password --region ap-northeast-2 \ | docker login --username AWS --password-stdin "$REGISTRY" - # 옛 배포 이미지가 쌓여 EC2 디스크가 차면 containerd 가 새 이미지를 못 받아 배포가 실패한다(#336). - # pull 전에 컨테이너 미참조 이미지를 정리해 누적을 막고, 이미 디스크가 찬 상태의 deadlock 도 깬다. - # 실행중 컨테이너(blue/green·alloy·redis)의 이미지와 볼륨은 보존된다. - # -af 로 전부 정리한다(시간 필터 X): 롤백은 "실행중 active 컨테이너 유지"라 옛 이미지를 재사용하지 않고, - # dev 는 배포가 잦아 --filter "until=72h" 류로 두면 디스크가 다시 찬다. 다중 버전 보존이 필요해지면 그때 제한한다. - docker image prune -af || true - df -h / | tail -1 + # pull 앞 정리와 여유 가드는 공용 블록이 맡는다(#336 과 같은 실패를 renderer 가 다시 내 공용화, TeamPiKi/infra#92). + bash /tmp/piki-deploy/prune_images.sh docker pull "$IMAGE"