Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 16 additions & 13 deletions .github/workflows/flutter-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@ name: flutter-ci
on:
pull_request:
branches: [develop, main]
# develop 은 PR 에서 이미 검사한 뒤에만 커밋이 들어온다. 머지 커밋으로 다시
# 돌리면 같은 코드를 두 번 검사하고 알림도 두 배가 된다. main 은 릴리스
# 지점이라 머지 후에도 한 번 더 본다.
push:
branches: [develop, main]
branches: [main]
workflow_dispatch:

concurrency:
Expand All @@ -20,7 +23,7 @@ env:

jobs:
analyze-and-test:
name: 정적 분석 + 테스트
name: analyze & test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -31,36 +34,36 @@ jobs:
channel: stable
cache: true

- name: 의존성 설치
- name: install deps
run: flutter pub get

- name: 코드 생성 결과가 최신인지 확인
- name: verify generated code is current
run: |
if grep -q "build_runner" pubspec.yaml; then
dart run build_runner build
# 생성물이 커밋된 것과 다르면 누군가 codegen을 빼먹은 것이다.
if ! git diff --exit-code --stat -- '*.g.dart' '*.freezed.dart'; then
echo "::error::생성 코드가 소스와 어긋난다. 'dart run build_runner build' 후 커밋할 것."
echo "::error::Generated code is stale. Run 'dart run build_runner build' and commit."
exit 1
fi
else
echo "build_runner 미사용 — 건너뜀"
echo "no build_runner in pubspec, skipping"
fi

- name: 정적 분석
- name: analyze
# v1 코드에 남은 경고·info는 별도 이슈로 정리 중이므로 에러만 실패로 본다.
run: flutter analyze --no-fatal-infos --no-fatal-warnings

- name: 테스트
- name: test
run: |
if [ -d test ] && [ -n "$(find test -name '*_test.dart' -print -quit)" ]; then
flutter test --reporter expanded
else
echo "테스트 파일이 아직 없다 — 건너뜀"
echo "no test files yet, skipping"
fi

build-android:
name: Android 디버그 빌드
name: android debug build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -77,7 +80,7 @@ jobs:
channel: stable
cache: true

- name: Firebase Android 설정 파일 생성
- name: write Firebase Android config
# google-services.json은 gitignore 대상이라 저장소에 없다.
# 아래 값은 lib/firebase_options.dart에 이미 커밋된 공개 클라이언트
# 식별자와 동일하다. oauth_client가 비어 있어 Google 로그인은 되지
Expand Down Expand Up @@ -105,10 +108,10 @@ jobs:
}
JSON

- name: 의존성 설치
- name: install deps
run: flutter pub get

- name: 디버그 APK 빌드
- name: build debug APK
run: flutter build apk --debug

- uses: actions/upload-artifact@v4
Expand Down
Loading