fix(ci): 모든 잡에 timeout-minutes 추가 — 멈춘 잡의 러너 점유 방지
CI (Flutter) / Flutter (analyze · test) (pull_request) Failing after 16m51s
CI / Backend (lint · test · e2e · build) (pull_request) Successful in 11m15s
CI / Frontend (lint · type-check · test) (pull_request) Successful in 9m12s
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Successful in 10m51s
CI (Flutter) / Flutter (analyze · test) (push) Failing after 16m24s
CI / Backend (lint · test · e2e · build) (push) Failing after 21s
CI / Frontend (lint · type-check · test) (push) Failing after 14m24s
CI / 에러 코드 SSOT 동기화 검사 (push) Has been cancelled

러너 환경에서 잡이 간헐적으로 멈추는 것을 확인했다.
Flutter 잡이 CPU 0%·네트워크 정지 상태로 25분 넘게 러너를 점유해
이후 잡들이 시작조차 하지 못했다. Frontend 잡에서도 같은 증상이 나타났다.

러너가 하나뿐이면 멈춘 잡 하나가 이후 전부를 굶긴다.
워크플로를 분리해도 점유 자체는 막지 못하므로 상한이 필요하다.

- backend 20분 / frontend 15분 / error-codes-sync 10분 / flutter 25분
- 증상과 즉시 해제 방법(잡 컨테이너 중지)을 ci/README.md 에 정리

CI 작성 시 넣었어야 할 기본 안전장치를 빠뜨렸던 것을 보완한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-17 23:48:31 +09:00
parent 962e060236
commit 40af8a2e09
3 changed files with 23 additions and 0 deletions
+15
View File
@@ -80,6 +80,21 @@ Flutter 는 SDK 다운로드로 매 실행 수 분이 걸리는데, backend/fron
> 러너는 기본적으로 잡을 **하나씩** 처리한다. 전체 시간을 줄이려면 러너를 여러 개 띄우거나
> `act_runner` 설정에서 동시 실행 수를 늘린다.
## 잡이 멈출 때
컨테이너 환경에서 잡이 간헐적으로 멈추는 경우가 있다 (CPU 0%, 네트워크 정지 상태로 진행 없음).
러너가 하나뿐이면 **멈춘 잡 하나가 이후 모든 잡을 굶긴다.**
그래서 모든 잡에 `timeout-minutes` 를 둔다. 상한에 걸리면 강제 종료되고 다음 잡으로 넘어간다.
새 잡을 추가할 때도 반드시 상한을 지정할 것.
멈춘 잡을 즉시 해제하려면 해당 컨테이너를 중지하면 된다 (러너가 실패로 처리하고 다음 잡을 집는다).
```bash
docker ps --format "{{.Names}}" | grep GITEA-ACTIONS # 실행 중인 잡 컨테이너
docker stop <컨테이너명>
```
## 주의
- **토큰은 `ci/.env` 에만** 둡니다. 이 파일은 루트 `.gitignore` 로 커밋되지 않습니다.