Files
project-base/.github/workflows/ci-flutter.yml
T
ttipo 40af8a2e09
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
fix(ci): 모든 잡에 timeout-minutes 추가 — 멈춘 잡의 러너 점유 방지
러너 환경에서 잡이 간헐적으로 멈추는 것을 확인했다.
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>
2026-09-17 23:48:31 +09:00

58 lines
1.4 KiB
YAML

name: CI (Flutter)
# Flutter 는 기본 CI 에서 분리되어 있다.
#
# 이유: SDK 다운로드로 매 실행마다 수 분이 걸리는데,
# backend/frontend 만 고친 커밋에서는 검사할 것이 없다.
#
# 언제 도는가:
# - flutter/ 아래 파일이 바뀐 푸시·PR (= 실제로 Flutter 를 쓸 때 자동으로)
# - Actions 탭의 "Run workflow" 버튼으로 수동 실행
#
# 모바일 앱을 아예 쓰지 않는 프로젝트라면 이 파일을 지우면 된다.
on:
push:
branches: [main]
paths:
- 'flutter/**'
- '.github/workflows/ci-flutter.yml'
pull_request:
paths:
- 'flutter/**'
- '.github/workflows/ci-flutter.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
flutter:
name: Flutter (analyze · test)
runs-on: ubuntu-latest
# 멈춘 잡이 러너를 무한 점유하지 않도록 상한을 둔다
timeout-minutes: 25
defaults:
run:
working-directory: flutter
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
# .env 는 pubspec 의 asset 이라 없으면 analyze 가 경고를 낸다
- name: Prepare .env
run: cp .env.example .env
- run: flutter pub get
- name: Analyze
run: flutter analyze
- name: Test
run: flutter test