project-auto-wizard 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +3 -7
  2. package/package.json +1 -1
  3. package/payload/config/breaking-changes.json +1 -1
  4. package/payload/scripts/__pycache__/changelog_manager.cpython-314.pyc +0 -0
  5. package/payload/scripts/__pycache__/issue_helper.cpython-314.pyc +0 -0
  6. package/payload/scripts/__pycache__/version_manager.cpython-314.pyc +0 -0
  7. package/payload/scripts/changelog_manager.py +1 -1
  8. package/payload/scripts/version_manager.py +2 -2
  9. package/payload/version.yml.template +0 -2
  10. package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +0 -3
  11. package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +1 -4
  12. package/payload/workflows/common/PROJECT-COMMON-ISSUE-HELPER.yaml +3 -6
  13. package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +0 -12
  14. package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +2 -5
  15. package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +3 -7
  16. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +7 -34
  17. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +2 -25
  18. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +2 -20
  19. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +5 -30
  20. package/payload/workflows/flutter/PROJECT-FLUTTER-APP-BUILD-TRIGGER.yaml +0 -4
  21. package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +7 -51
  22. package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +5 -29
  23. package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +9 -29
  24. package/payload/workflows/go/PROJECT-GO-CI.yaml +5 -28
  25. package/payload/workflows/go/PROJECT-GO-PR-PREVIEW.yaml +19 -99
  26. package/payload/workflows/go/PROJECT-GO-SIMPLE-CICD.yaml +18 -89
  27. package/payload/workflows/next/PROJECT-NEXT-CI.yaml +11 -41
  28. package/payload/workflows/next/PROJECT-NEXT-CICD.yaml +9 -45
  29. package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +1 -27
  30. package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +14 -97
  31. package/payload/workflows/python/PROJECT-PYTHON-SIMPLE-CICD.yaml +14 -92
  32. package/payload/workflows/react/PROJECT-REACT-CI.yaml +11 -40
  33. package/payload/workflows/react/PROJECT-REACT-CICD.yaml +9 -43
  34. package/payload/workflows/spring/{nexus/PROJECT-SPRING-NEXUS-CI.yml → PROJECT-SPRING-CI.yml} +2 -25
  35. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-NGINX-CICD.yaml +19 -63
  36. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-TRAEFIK-CICD.yaml +19 -59
  37. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +23 -86
  38. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-SIMPLE-CICD.yaml +20 -80
  39. package/src/cli/args.js +1 -15
  40. package/src/cli/help.js +0 -2
  41. package/src/commands/doctor.js +5 -5
  42. package/src/commands/dry-run.js +1 -1
  43. package/src/commands/full.js +9 -10
  44. package/src/commands/interactive-flutter.js +1 -1
  45. package/src/commands/interactive.js +25 -46
  46. package/src/commands/purge.js +2 -2
  47. package/src/commands/status.js +4 -6
  48. package/src/commands/uninstall.js +3 -4
  49. package/src/context.js +4 -6
  50. package/src/core/assets.js +2 -2
  51. package/src/core/baseline.js +1 -1
  52. package/src/core/branches.js +3 -3
  53. package/src/core/breaking-check.js +1 -1
  54. package/src/core/breaking.js +1 -1
  55. package/src/core/copy/flutter-app.js +2 -2
  56. package/src/core/copy/gitignore.js +8 -8
  57. package/src/core/copy/workflows.js +24 -69
  58. package/src/core/deploy-style.js +2 -2
  59. package/src/core/detect-fs.js +11 -11
  60. package/src/core/detect.js +7 -7
  61. package/src/core/flutter-options.js +1 -1
  62. package/src/core/installed-stores.js +1 -1
  63. package/src/core/logger.js +1 -1
  64. package/src/core/paths-resolve.js +1 -1
  65. package/src/core/removal-plan.js +4 -4
  66. package/src/core/verify.js +3 -3
  67. package/src/core/version-yml.js +17 -33
  68. package/src/core/wizard-env.js +4 -4
  69. package/src/index.js +12 -14
  70. package/src/ui/banner.js +2 -2
  71. package/src/ui/env-plan.js +10 -16
  72. package/src/ui/prompts.js +9 -14
  73. package/src/ui/status-cards.js +10 -12
  74. package/src/ui/summary.js +9 -9
  75. package/payload/workflows/common/secret-backup/PROJECT-COMMON-SECRET-FILE-UPLOAD.yaml +0 -210
  76. package/payload/workflows/spring/nexus/PROJECT-SPRING-GITHUB-PACKAGES-PUBLISH.yml +0 -92
  77. package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-PUBLISH.yml +0 -70
  78. package/src/core/options-ask.js +0 -102
@@ -1,14 +1,10 @@
1
1
  # project-auto-wizard:managed-workflow
2
- # ===================================================================
3
2
  # Flutter Android 자체 서버(SMB) 배포 워크플로우
4
- # ===================================================================
5
3
  #
6
4
  # {{MAIN_BRANCH}} 브랜치 푸시 시 Android APK를 빌드하고
7
5
  # 자체 서버(예: Synology NAS·NAS·Linux)의 SMB 공유에 APK를 배포합니다.
8
6
  #
9
- # ===================================================================
10
- # 🔑 필수 GitHub Secrets
11
- # ===================================================================
7
+ # 필수 GitHub Secrets
12
8
  # ENV_FILE 또는 ENV: .env 파일 내용 (둘 중 하나, ENV_FILE 우선)
13
9
  # RELEASE_KEYSTORE_BASE64: 서명용 keystore (base64)
14
10
  # RELEASE_KEYSTORE_PASSWORD: keystore 비밀번호
@@ -18,7 +14,6 @@
18
14
  # SERVER_HOST: 서버 호스트(SMB 접속 주소)
19
15
  # SERVER_USER: SMB 사용자명
20
16
  # SERVER_PASSWORD: SMB 비밀번호
21
- # ===================================================================
22
17
 
23
18
  name: PROJECT-Android-SelfHosted-CICD
24
19
 
@@ -28,9 +23,7 @@ on:
28
23
  # @wizard paths-anchor (모노레포일 때 integrator가 paths 필터를 여기 주입)
29
24
  workflow_dispatch: # 수동 실행 옵션 추가
30
25
 
31
- # ============================================
32
- # 🔧 프로젝트별 설정 (아래 값들을 수정하세요)
33
- # ============================================
26
+ # 프로젝트별 설정 (아래 값들을 수정하세요)
34
27
  env:
35
28
  # 프로젝트 이름 (APK 파일명, 아티팩트명, 히스토리 파일명에 사용)
36
29
  APP_ARTIFACT_NAME: "__APP_ARTIFACT_NAME__" # @wizard ask:@repo
@@ -55,7 +48,6 @@ jobs:
55
48
  working-directory: ${{ env.FLUTTER_PROJECT_DIR }}
56
49
 
57
50
  steps:
58
- # Repository 체크아웃 및 목록 출력
59
51
  - name: Check out repository
60
52
  uses: actions/checkout@v7
61
53
  with:
@@ -90,7 +82,6 @@ jobs:
90
82
  echo "dart-define file prepared"
91
83
  fi
92
84
 
93
- # Keystore와 key.properties 설정
94
85
  - name: Setup Keystore and key.properties
95
86
  run: |
96
87
  mkdir -p android/app/keystore
@@ -104,7 +95,6 @@ jobs:
104
95
  echo "key.properties created"
105
96
  ls -la android/
106
97
 
107
- # Google-services.json 생성
108
98
  - name: Create Google-services.json
109
99
  run: |
110
100
  cat << 'EOF' > android/app/google-services.json
@@ -113,7 +103,6 @@ jobs:
113
103
  echo "✅ Google-services.json 생성 완료"
114
104
  ls -la android/app/
115
105
 
116
- # Flutter 설정 및 버전 확인
117
106
  - name: Set up Flutter
118
107
  uses: subosito/flutter-action@v2
119
108
  with:
@@ -126,7 +115,6 @@ jobs:
126
115
  echo "Flutter setup completed"
127
116
  flutter --version
128
117
 
129
- # Flutter 및 Gradle 캐시
130
118
  - name: Cache Flutter dependencies
131
119
  uses: actions/cache@v6
132
120
  with:
@@ -144,7 +132,6 @@ jobs:
144
132
  restore-keys: |
145
133
  ${{ runner.os }}-gradle-
146
134
 
147
- # 프로젝트 의존성 설치
148
135
  - name: Install dependencies
149
136
  run: |
150
137
  flutter pub get
@@ -154,14 +141,12 @@ jobs:
154
141
  echo "Dependencies installed"
155
142
  ls -la
156
143
 
157
- # Gradle 셋업
158
144
  - name: Setup Gradle
159
145
  working-directory: ${{ env.FLUTTER_PROJECT_DIR }}/android
160
146
  run: |
161
147
  chmod +x gradlew
162
148
  echo "Gradle wrapper permissions set"
163
149
 
164
- # Java 설정 및 버전 확인
165
150
  - name: Set up Java
166
151
  uses: actions/setup-java@v5
167
152
  with:
@@ -173,7 +158,6 @@ jobs:
173
158
  echo "Java setup completed"
174
159
  java -version
175
160
 
176
- # 현재 버전 정보 및 짧은 커밋 해시 계산
177
161
  - name: Get version info and calculate short commit hash
178
162
  id: version_info
179
163
  run: |
@@ -197,7 +181,6 @@ jobs:
197
181
  ls -la build/app/outputs/flutter-apk/ || true
198
182
  echo "APK built"
199
183
 
200
- # APK 파일 이름 변경 및 준비
201
184
  - name: Rename and Prepare APK
202
185
  run: |
203
186
  mkdir -p ./android/app/build/outputs/apk/release/
@@ -205,7 +188,6 @@ jobs:
205
188
  echo "APK renamed to ${{ env.APP_ARTIFACT_NAME }}-v${{ env.VERSION }}-${{ env.SHORT_COMMIT_HASH }}.apk"
206
189
  ls -la ./android/app/build/outputs/apk/release/
207
190
 
208
- # APK를 아티팩트로 업로드
209
191
  - name: Upload APK as Artifact
210
192
  uses: actions/upload-artifact@v7
211
193
  with:
@@ -1,7 +1,5 @@
1
1
  # project-auto-wizard:managed-workflow
2
- # ===================================================================
3
2
  # Flutter Android 테스트용 APK 빌드 워크플로우
4
- # ===================================================================
5
3
  #
6
4
  # 이 워크플로우는 기능 브랜치에서 수동으로 실행하여
7
5
  # 테스트용 Android APK를 빌드합니다.
@@ -22,27 +20,23 @@
22
20
  # 3. "Run workflow" 버튼 클릭
23
21
  # 4. 빌드 완료 후 아티팩트에서 APK 다운로드
24
22
  #
25
- # ===================================================================
26
- # 🔑 필수 GitHub Secrets
27
- # ===================================================================
23
+ # 필수 GitHub Secrets
28
24
  #
29
- # 🔐 Release Keystore (Play Store 배포와 동일):
25
+ # Release Keystore (Play Store 배포와 동일):
30
26
  # RELEASE_KEYSTORE_BASE64: 릴리즈 키스토어 파일 (base64)
31
27
  # RELEASE_KEYSTORE_PASSWORD: 키스토어 비밀번호
32
28
  # RELEASE_KEY_ALIAS: 키 별칭
33
29
  # RELEASE_KEY_PASSWORD: 키 비밀번호
34
30
  #
35
- # 📝 환경 설정 (선택):
31
+ # 환경 설정 (선택):
36
32
  # ENV_FILE (선택): .env 파일 내용
37
33
  # GOOGLE_SERVICES_JSON (선택): google-services.json 내용 (Firebase 사용 시)
38
34
  #
39
- # 🔥 Firebase App Distribution (선택):
35
+ # Firebase App Distribution (선택):
40
36
  # FIREBASE_SERVICE_ACCOUNT_JSON_BASE64: Firebase 서비스 계정 JSON (base64)
41
37
  #
42
38
  # ※ 위 Secrets는 저장소 Settings → Secrets and variables → Actions에 등록하세요.
43
39
  # Firebase 업로드를 쓰려면 아래 env의 FIREBASE_APP_ID·FIREBASE_TESTER_GROUP도 수정합니다.
44
- #
45
- # ===================================================================
46
40
 
47
41
  name: PROJECT-Flutter-Android-Test-APK
48
42
 
@@ -55,9 +49,7 @@ on:
55
49
  repository_dispatch:
56
50
  types: [build-android-app]
57
51
 
58
- # ===================================================================
59
- # 🔧 프로젝트별 설정 (아래 값들을 수정하세요)
60
- # ===================================================================
52
+ # 프로젝트별 설정 (아래 값들을 수정하세요)
61
53
  env:
62
54
  FLUTTER_VERSION: "3.35.5"
63
55
  JAVA_VERSION: "__JAVA_VERSION__" # @wizard ask:17
@@ -157,9 +149,6 @@ jobs:
157
149
  echo "⚠️ Firebase 서비스 계정 없음 - App Distribution 업로드 건너뜀"
158
150
  fi
159
151
 
160
- # ===================================================================
161
- # 진행 상황 댓글 시스템
162
- # ===================================================================
163
152
  - name: 진행 상황 댓글 생성
164
153
  id: progress_comment
165
154
  if: github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != ''
@@ -215,7 +204,6 @@ jobs:
215
204
  echo "🌿 브랜치: $BRANCH_NAME"
216
205
  git pull origin "$BRANCH_NAME" || echo "⚠️ Pull 실패 (이미 최신 상태일 수 있음)"
217
206
 
218
- # 브랜치명에서 이슈 번호 추출 및 GitHub API로 이슈 정보 가져오기
219
207
  - name: 브랜치명에서 이슈 정보 추출
220
208
  id: issue_info
221
209
  run: |
@@ -261,7 +249,6 @@ jobs:
261
249
  fi
262
250
  fi
263
251
 
264
- # 빌드 정보 생성
265
252
  - name: 빌드 정보 생성
266
253
  id: build_info
267
254
  run: |
@@ -370,7 +357,6 @@ jobs:
370
357
  echo "ℹ️ GOOGLE_SERVICES_JSON secret not provided, skipping"
371
358
  fi
372
359
 
373
- # Flutter 설정
374
360
  - name: Set up Flutter
375
361
  uses: subosito/flutter-action@v2
376
362
  with:
@@ -382,7 +368,6 @@ jobs:
382
368
  echo "✅ Flutter setup completed"
383
369
  flutter --version
384
370
 
385
- # Flutter 및 Gradle 캐시
386
371
  - name: Cache Flutter dependencies
387
372
  uses: actions/cache@v6
388
373
  with:
@@ -400,7 +385,6 @@ jobs:
400
385
  restore-keys: |
401
386
  ${{ runner.os }}-gradle-
402
387
 
403
- # 프로젝트 의존성 설치
404
388
  - name: Install dependencies
405
389
  run: |
406
390
  flutter pub get
@@ -409,14 +393,12 @@ jobs:
409
393
  fi
410
394
  echo "✅ Dependencies installed"
411
395
 
412
- # Gradle 셋업
413
396
  - name: Setup Gradle
414
397
  working-directory: ${{ env.FLUTTER_PROJECT_DIR }}/android
415
398
  run: |
416
399
  chmod +x gradlew
417
400
  echo "✅ Gradle wrapper permissions set"
418
401
 
419
- # Java 설정
420
402
  - name: Set up Java
421
403
  uses: actions/setup-java@v5
422
404
  with:
@@ -428,7 +410,6 @@ jobs:
428
410
  echo "✅ Java setup completed"
429
411
  java -version
430
412
 
431
- # 진행상황 - 준비 완료
432
413
  - name: 진행상황 - 준비 완료
433
414
  id: progress_step1
434
415
  if: github.event_name == 'repository_dispatch' && needs.prepare-test-build.outputs.progress_comment_id != ''
@@ -541,7 +522,6 @@ jobs:
541
522
  ls -la ./build/app/outputs/flutter-apk/ || true
542
523
  echo "✅ APK built"
543
524
 
544
- # APK 파일 이름 변경 및 준비
545
525
  - name: Rename and Prepare APK
546
526
  run: |
547
527
  mkdir -p ./android/app/build/outputs/apk/release/
@@ -562,7 +542,6 @@ jobs:
562
542
  echo "✅ APK 파일 크기가 아티팩트 제한 내입니다 (${APK_SIZE_MB}MB / 500MB)"
563
543
  fi
564
544
 
565
- # 진행상황 - APK 빌드 완료
566
545
  - name: 진행상황 - APK 빌드 완료
567
546
  id: progress_step2
568
547
  if: github.event_name == 'repository_dispatch' && needs.prepare-test-build.outputs.progress_comment_id != ''
@@ -613,7 +592,6 @@ jobs:
613
592
  core.setOutput('elapsed', elapsedStr);
614
593
  core.setOutput('end_time', now.toString());
615
594
 
616
- # 빌드 정보 파일 생성
617
595
  - name: Create build info file
618
596
  run: |
619
597
  BUILD_NUMBER="${{ needs.prepare-test-build.outputs.build_number }}"
@@ -756,7 +734,6 @@ jobs:
756
734
  const elapsedStr = minutes > 0 ? `${minutes}분 ${seconds}초` : `${seconds}초`;
757
735
  core.setOutput('elapsed', elapsedStr);
758
736
 
759
- # 진행 상황 최종 업데이트 - 성공
760
737
  - name: 진행 상황 최종 업데이트 - 성공
761
738
  if: success() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.prepare-test-build.outputs.progress_comment_id != ''
762
739
  uses: actions/github-script@v9
@@ -869,7 +846,6 @@ jobs:
869
846
  console.log(`✅ 이슈 #${issueNumber}에도 빌드 성공 댓글 작성 완료`);
870
847
  }
871
848
 
872
- # 진행 상황 최종 업데이트 - 실패
873
849
  - name: 진행 상황 최종 업데이트 - 실패
874
850
  if: failure() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.prepare-test-build.outputs.progress_comment_id != ''
875
851
  uses: actions/github-script@v9
@@ -959,7 +935,6 @@ jobs:
959
935
  console.log(`❌ 이슈 #${issueNumber}에도 빌드 실패 댓글 작성 완료`);
960
936
  }
961
937
 
962
- # 콘솔 알림
963
938
  - name: Notify Build Success
964
939
  if: success()
965
940
  run: |
@@ -1,7 +1,5 @@
1
1
  # project-auto-wizard:managed-workflow
2
- # ===================================================================
3
2
  # Flutter 테스트 앱 빌드 트리거 워크플로우
4
- # ===================================================================
5
3
  #
6
4
  # 이 워크플로우는 PR 또는 이슈에 댓글로 빌드 명령어를 작성하면
7
5
  # Android와 iOS 테스트 앱 빌드를 자동으로 트리거합니다.
@@ -26,8 +24,6 @@
26
24
  # 트리거되는 워크플로우:
27
25
  # - PROJECT-FLUTTER-ANDROID-TEST-APK.yaml (event_type: build-android-app)
28
26
  # - PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml (event_type: build-ios-app)
29
- #
30
- # ===================================================================
31
27
 
32
28
  name: PROJECT-Flutter-App-Build-Trigger
33
29
 
@@ -1,7 +1,5 @@
1
1
  # project-auto-wizard:managed-workflow
2
- # ==========================================================================================
3
2
  # Flutter CI (코드 분석 및 빌드 검증) 워크플로우
4
- # ==========================================================================================
5
3
  #
6
4
  # 이 워크플로우는 PR 생성 또는 {{MAIN_BRANCH}} 브랜치 푸시 시
7
5
  # 코드 정적 분석(flutter analyze)과 Android/iOS 앱 빌드를 검증합니다.
@@ -22,9 +20,7 @@
22
20
  # 3. ENABLE_ANDROID, ENABLE_IOS로 빌드 대상 플랫폼 선택
23
21
  # 4. ENV_FILE_PATH로 환경변수 파일 경로 커스터마이징
24
22
  #
25
- # ==========================================================================================
26
- # 🔧 프로젝트별 설정
27
- # ==========================================================================================
23
+ # 프로젝트별 설정
28
24
  #
29
25
  # ANALYZE_ONLY : true면 analyze만 실행, 빌드 스킵 (기본: false)
30
26
  # ENABLE_ANDROID : Android 빌드 활성화 여부 (ANALYZE_ONLY=false일 때)
@@ -37,15 +33,12 @@
37
33
  # FLUTTER_PROJECT_DIR : Flutter 루트 경로 (설치 시 자동 설정, 모노레포는 app 등)
38
34
  # PROJECT_PATH : 변경 감지 기준 경로 (설치 시 자동 설정, "."이면 항상 실행)
39
35
  #
40
- # ==========================================================================================
41
- # 🔑 필수 GitHub Secrets
42
- # ==========================================================================================
36
+ # 필수 GitHub Secrets
43
37
  # ENV_FILE (선택): .env 파일 내용
44
38
  #
45
39
  # ※ CI는 빌드 검증 목적이므로 서명/배포 관련 Secrets 불필요
46
40
  # ※ 모노레포에서 이 CI를 required check로 쓰려면 개별 job이 아니라 `ci-gate` 하나만 등록하세요.
47
41
  # (경로가 바뀌지 않아 건너뛴 job은 Success로 집계되고, ci-gate가 최종 결과를 판정합니다)
48
- # ==========================================================================================
49
42
 
50
43
  name: PROJECT-Flutter-CI
51
44
 
@@ -74,25 +67,23 @@ permissions:
74
67
  contents: read
75
68
  pull-requests: write
76
69
 
77
- # ==========================================================================================
78
- # 🔧 프로젝트별 설정 (아래 값들을 수정하세요)
79
- # ==========================================================================================
70
+ # 프로젝트별 설정 (아래 값들을 수정하세요)
80
71
  env:
81
- # 🎯 모노레포 변경 감지 경로 (설치 시 자동 설정, 단일 레포는 ".")
72
+ # 모노레포 변경 감지 경로 (설치 시 자동 설정, 단일 레포는 ".")
82
73
  PROJECT_PATH: "." # @wizard auto:project-path
83
74
  # Flutter 루트 경로(레포 루트 기준). 단일레포면 ".", 모노레포면 "app" 등 — 설치 시 자동 설정
84
75
  FLUTTER_PROJECT_DIR: "." # @wizard auto:flutter-root
85
76
  # 환경변수 전달 방식 (dart-define | dotenv) — 설치 시 선택값으로 자동 설정
86
77
  ENV_MODE: "dart-define" # @wizard auto:flutter-env-mode
87
78
 
88
- # 🎯 CI 모드 설정
79
+ # CI 모드 설정
89
80
  ANALYZE_ONLY: "false" # true: analyze만 실행 (빌드 스킵), false: analyze + 빌드
90
81
 
91
- # 🎯 빌드 대상 플랫폼 설정 (ANALYZE_ONLY=false일 때만 적용)
82
+ # 빌드 대상 플랫폼 설정 (ANALYZE_ONLY=false일 때만 적용)
92
83
  ENABLE_ANDROID: "true" # Android 빌드 활성화 (true/false)
93
84
  ENABLE_IOS: "true" # iOS 빌드 활성화 (true/false)
94
85
 
95
- # 🔧 프로젝트별 설정
86
+ # 프로젝트별 설정
96
87
  FLUTTER_VERSION: "3.35.5"
97
88
  JAVA_VERSION: "__JAVA_VERSION__" # @wizard ask:17
98
89
  XCODE_VERSION: "26.0"
@@ -103,9 +94,7 @@ concurrency:
103
94
  cancel-in-progress: true
104
95
 
105
96
  jobs:
106
- # ===================================================================
107
97
  # Job 0: 변경 감지 (PROJECT_PATH 아래가 바뀌었을 때만 이후 job 실행)
108
- # ===================================================================
109
98
  changes:
110
99
  name: 변경 감지
111
100
  runs-on: ubuntu-latest
@@ -127,9 +116,7 @@ jobs:
127
116
  project:
128
117
  - '${{ env.PROJECT_PATH == '.' && '**' || format('{0}/**', env.PROJECT_PATH) }}'
129
118
 
130
- # ===================================================================
131
119
  # Job 1: 준비 단계
132
- # ===================================================================
133
120
  prepare:
134
121
  name: CI 준비
135
122
  needs: changes
@@ -147,7 +134,6 @@ jobs:
147
134
 
148
135
  steps:
149
136
  # 설정 값 outputs으로 전달
150
- # workflow_dispatch 입력값이 있으면 우선 사용, 없으면 env 값 사용
151
137
  - name: 설정 값 전달
152
138
  id: config
153
139
  run: |
@@ -171,7 +157,6 @@ jobs:
171
157
  echo " iOS: $ENABLE_IOS"
172
158
  echo " 트리거: ${{ github.event_name }}"
173
159
 
174
- # 빌드 정보 수집
175
160
  - name: 빌드 정보 수집
176
161
  id: info
177
162
  run: |
@@ -189,7 +174,6 @@ jobs:
189
174
  echo " 브랜치: $BRANCH_NAME"
190
175
  echo " 커밋: $COMMIT_HASH"
191
176
 
192
- # PR인 경우 진행 상황 댓글 생성
193
177
  - name: 진행 상황 댓글 생성
194
178
  id: comment
195
179
  if: github.event_name == 'pull_request'
@@ -261,9 +245,7 @@ jobs:
261
245
  core.setOutput('comment_id', comment.id);
262
246
  core.setOutput('start_time', startTime);
263
247
 
264
- # ===================================================================
265
248
  # Job 2: 코드 분석 (병렬)
266
- # ===================================================================
267
249
  analyze:
268
250
  name: 코드 분석
269
251
  runs-on: ubuntu-latest
@@ -303,7 +285,6 @@ jobs:
303
285
  echo "dart-define file prepared"
304
286
  fi
305
287
 
306
- # Flutter 설정
307
288
  - name: Set up Flutter
308
289
  uses: subosito/flutter-action@v2
309
290
  with:
@@ -315,7 +296,6 @@ jobs:
315
296
  echo "✅ Flutter setup completed"
316
297
  flutter --version
317
298
 
318
- # Flutter 캐시
319
299
  - name: Cache Flutter dependencies
320
300
  uses: actions/cache@v6
321
301
  with:
@@ -323,7 +303,6 @@ jobs:
323
303
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles(format('{0}/**/pubspec.lock', env.FLUTTER_PROJECT_DIR)) }}
324
304
  restore-keys: ${{ runner.os }}-flutter-pub-
325
305
 
326
- # 프로젝트 의존성 설치
327
306
  - name: Install dependencies
328
307
  run: |
329
308
  flutter pub get
@@ -332,7 +311,6 @@ jobs:
332
311
  fi
333
312
  echo "✅ Dependencies installed"
334
313
 
335
- # Flutter Analyze 실행
336
314
  - name: Run Flutter Analyze
337
315
  id: analyze
338
316
  run: |
@@ -340,7 +318,6 @@ jobs:
340
318
  flutter analyze --no-fatal-infos
341
319
  echo "✅ 코드 분석 완료"
342
320
 
343
- # 분석 결과 기록
344
321
  - name: 분석 결과 기록
345
322
  id: result
346
323
  if: always()
@@ -360,9 +337,7 @@ jobs:
360
337
  core.setOutput('duration', duration);
361
338
  console.log(`📋 코드 분석 결과: ${status} (${duration})`);
362
339
 
363
- # ===================================================================
364
340
  # Job 3: Android 빌드 (조건부, 병렬)
365
- # ===================================================================
366
341
  build-android:
367
342
  name: Android 빌드
368
343
  if: |
@@ -405,7 +380,6 @@ jobs:
405
380
  echo "dart-define file prepared"
406
381
  fi
407
382
 
408
- # Flutter 설정
409
383
  - name: Set up Flutter
410
384
  uses: subosito/flutter-action@v2
411
385
  with:
@@ -417,7 +391,6 @@ jobs:
417
391
  echo "✅ Flutter setup completed"
418
392
  flutter --version
419
393
 
420
- # Flutter 캐시
421
394
  - name: Cache Flutter dependencies
422
395
  uses: actions/cache@v6
423
396
  with:
@@ -425,7 +398,6 @@ jobs:
425
398
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles(format('{0}/**/pubspec.lock', env.FLUTTER_PROJECT_DIR)) }}
426
399
  restore-keys: ${{ runner.os }}-flutter-pub-
427
400
 
428
- # Gradle 캐시
429
401
  - name: Cache Gradle dependencies
430
402
  uses: actions/cache@v6
431
403
  with:
@@ -436,7 +408,6 @@ jobs:
436
408
  restore-keys: |
437
409
  ${{ runner.os }}-gradle-
438
410
 
439
- # 프로젝트 의존성 설치
440
411
  - name: Install dependencies
441
412
  run: |
442
413
  flutter pub get
@@ -445,7 +416,6 @@ jobs:
445
416
  fi
446
417
  echo "✅ Dependencies installed"
447
418
 
448
- # Java 설정
449
419
  - name: Set up Java
450
420
  uses: actions/setup-java@v5
451
421
  with:
@@ -457,7 +427,6 @@ jobs:
457
427
  echo "✅ Java setup completed"
458
428
  java -version
459
429
 
460
- # Gradle 셋업
461
430
  - name: Setup Gradle
462
431
  working-directory: ${{ env.FLUTTER_PROJECT_DIR }}/android
463
432
  run: |
@@ -473,7 +442,6 @@ jobs:
473
442
  echo "✅ APK 빌드 완료"
474
443
  ls -la ./build/app/outputs/flutter-apk/ || true
475
444
 
476
- # 빌드 결과 기록
477
445
  - name: 빌드 결과 기록
478
446
  id: result
479
447
  if: always()
@@ -493,9 +461,7 @@ jobs:
493
461
  core.setOutput('duration', duration);
494
462
  console.log(`📋 Android 빌드 결과: ${status} (${duration})`);
495
463
 
496
- # ===================================================================
497
464
  # Job 4: iOS 빌드 (조건부, 병렬)
498
- # ===================================================================
499
465
  build-ios:
500
466
  name: iOS 빌드
501
467
  if: |
@@ -558,7 +524,6 @@ jobs:
558
524
  echo "dart-define file prepared"
559
525
  fi
560
526
 
561
- # Flutter 설정
562
527
  - name: Set up Flutter
563
528
  uses: subosito/flutter-action@v2
564
529
  with:
@@ -570,7 +535,6 @@ jobs:
570
535
  echo "✅ Flutter setup completed"
571
536
  flutter --version
572
537
 
573
- # Flutter 캐시
574
538
  - name: Cache Flutter dependencies
575
539
  uses: actions/cache@v6
576
540
  with:
@@ -578,7 +542,6 @@ jobs:
578
542
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles(format('{0}/**/pubspec.lock', env.FLUTTER_PROJECT_DIR)) }}
579
543
  restore-keys: ${{ runner.os }}-flutter-pub-
580
544
 
581
- # 프로젝트 의존성 설치
582
545
  - name: Install dependencies
583
546
  run: |
584
547
  flutter pub get
@@ -587,7 +550,6 @@ jobs:
587
550
  fi
588
551
  echo "✅ Dependencies installed"
589
552
 
590
- # Ruby 및 CocoaPods 설정
591
553
  - name: Set up Ruby
592
554
  uses: ruby/setup-ruby@v1
593
555
  with:
@@ -600,7 +562,6 @@ jobs:
600
562
  cd ios && pod install --repo-update || pod install
601
563
  echo "✅ CocoaPods installed"
602
564
 
603
- # iOS 빌드 (서명 없이)
604
565
  - name: Build iOS
605
566
  id: build
606
567
  run: |
@@ -608,7 +569,6 @@ jobs:
608
569
  flutter build ios --release --no-codesign ${DART_DEFINE_FILE:+--dart-define-from-file="$DART_DEFINE_FILE"}
609
570
  echo "✅ iOS 빌드 완료"
610
571
 
611
- # 빌드 결과 기록
612
572
  - name: 빌드 결과 기록
613
573
  id: result
614
574
  if: always()
@@ -628,9 +588,7 @@ jobs:
628
588
  core.setOutput('duration', duration);
629
589
  console.log(`📋 iOS 빌드 결과: ${status} (${duration})`);
630
590
 
631
- # ===================================================================
632
591
  # Job 5: 결과 보고
633
- # ===================================================================
634
592
  report:
635
593
  name: 결과 보고
636
594
  if: always() && github.event_name == 'pull_request' && needs.changes.outputs.project == 'true'
@@ -786,9 +744,7 @@ jobs:
786
744
  console.log('⚠️ 댓글 ID가 없어 업데이트를 건너뜁니다.');
787
745
  }
788
746
 
789
- # ===================================================================
790
747
  # Job 6: CI Gate (required check로 등록할 단일 진입점)
791
- # ===================================================================
792
748
  # 건너뛴(skipped) job은 통과로 보고 failure/cancelled가 하나라도 있으면 실패한다.
793
749
  ci-gate:
794
750
  name: CI Gate