project-auto-wizard 0.1.24 → 0.1.31

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 (37) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/payload/scripts/__pycache__/changelog_manager.cpython-314.pyc +0 -0
  4. package/payload/scripts/__pycache__/version_manager.cpython-314.pyc +0 -0
  5. package/payload/scripts/version_manager.py +7 -0
  6. package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +1 -1
  7. package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +1 -1
  8. package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +1 -1
  9. package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +1 -1
  10. package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +1 -1
  11. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +26 -15
  12. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +37 -23
  13. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +10 -7
  14. package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +43 -40
  15. package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +45 -19
  16. package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +39 -35
  17. package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +33 -22
  18. package/payload/workflows/flutter/PROJECT-FLUTTER-SUH-LAB-APP-BUILD-TRIGGER.yaml +9 -9
  19. package/payload/workflows/next/PROJECT-NEXT-CI.yaml +6 -6
  20. package/payload/workflows/next/PROJECT-NEXT-CICD.yaml +6 -6
  21. package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +1 -1
  22. package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +27 -27
  23. package/payload/workflows/python/PROJECT-PYTHON-SIMPLE-CICD.yaml +1 -1
  24. package/payload/workflows/react/PROJECT-REACT-CI.yaml +6 -6
  25. package/payload/workflows/react/PROJECT-REACT-CICD.yaml +6 -6
  26. package/payload/workflows/spring/PROJECT-SPRING-GITHUB-PACKAGES-PUBLISH.yml +2 -2
  27. package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-CI.yml +5 -5
  28. package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-PUBLISH.yml +2 -2
  29. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-NGINX-CICD.yaml +3 -3
  30. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-TRAEFIK-CICD.yaml +3 -3
  31. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +36 -36
  32. package/payload/workflows/spring/server-deploy/PROJECT-SPRING-SIMPLE-CICD.yaml +3 -3
  33. package/src/commands/interactive.js +4 -3
  34. package/src/core/detect-fs.js +8 -1
  35. package/src/core/detect.js +39 -0
  36. package/src/index.js +3 -3
  37. package/src/ui/summary.js +5 -1
@@ -87,7 +87,7 @@ jobs:
87
87
  - name: 브랜치 존재 여부 사전 확인
88
88
  id: verify_branch
89
89
  if: github.event_name == 'repository_dispatch'
90
- uses: actions/github-script@v7
90
+ uses: actions/github-script@v9
91
91
  with:
92
92
  github-token: ${{ secrets.GITHUB_TOKEN }}
93
93
  script: |
@@ -158,7 +158,7 @@ jobs:
158
158
  - name: 진행 상황 댓글 생성
159
159
  id: progress_comment
160
160
  if: github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != ''
161
- uses: actions/github-script@v7
161
+ uses: actions/github-script@v9
162
162
  with:
163
163
  github-token: ${{ secrets.GITHUB_TOKEN }}
164
164
  script: |
@@ -199,7 +199,7 @@ jobs:
199
199
  core.setOutput('start_time', startTime.toString());
200
200
 
201
201
  - name: Checkout repository
202
- uses: actions/checkout@v5
202
+ uses: actions/checkout@v7
203
203
  with:
204
204
  fetch-depth: 0
205
205
  ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref }}
@@ -302,7 +302,7 @@ jobs:
302
302
 
303
303
  steps:
304
304
  - name: Checkout repository
305
- uses: actions/checkout@v5
305
+ uses: actions/checkout@v7
306
306
  with:
307
307
  fetch-depth: 0
308
308
  ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref }}
@@ -333,11 +333,11 @@ jobs:
333
333
  KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
334
334
  run: |
335
335
  cat > android/key.properties << EOF
336
- storeFile=keystore/key.jks
337
- storePassword=$STORE_PASSWORD
338
- keyAlias=$KEY_ALIAS
339
- keyPassword=$KEY_PASSWORD
340
- EOF
336
+ storeFile=keystore/key.jks
337
+ storePassword=$STORE_PASSWORD
338
+ keyAlias=$KEY_ALIAS
339
+ keyPassword=$KEY_PASSWORD
340
+ EOF
341
341
  echo "✅ key.properties 생성 완료"
342
342
 
343
343
  # google-services.json 생성 (선택적)
@@ -368,14 +368,14 @@ EOF
368
368
 
369
369
  # Flutter 및 Gradle 캐시
370
370
  - name: Cache Flutter dependencies
371
- uses: actions/cache@v4
371
+ uses: actions/cache@v6
372
372
  with:
373
373
  path: ~/.pub-cache
374
374
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles('**/pubspec.lock') }}
375
375
  restore-keys: ${{ runner.os }}-flutter-pub-
376
376
 
377
377
  - name: Cache Gradle dependencies
378
- uses: actions/cache@v4
378
+ uses: actions/cache@v6
379
379
  with:
380
380
  path: |
381
381
  ~/.gradle/caches
@@ -388,6 +388,9 @@ EOF
388
388
  - name: Install dependencies
389
389
  run: |
390
390
  flutter pub get
391
+ if grep -q "build_runner" pubspec.yaml; then
392
+ dart run build_runner build --delete-conflicting-outputs
393
+ fi
391
394
  echo "✅ Dependencies installed"
392
395
 
393
396
  # Gradle 셋업
@@ -399,7 +402,7 @@ EOF
399
402
 
400
403
  # Java 설정
401
404
  - name: Set up Java
402
- uses: actions/setup-java@v3
405
+ uses: actions/setup-java@v5
403
406
  with:
404
407
  distribution: "temurin"
405
408
  java-version: ${{ env.JAVA_VERSION }}
@@ -435,7 +438,7 @@ EOF
435
438
  - name: 진행상황 - 준비 완료
436
439
  id: progress_step1
437
440
  if: github.event_name == 'repository_dispatch' && needs.prepare-test-build.outputs.progress_comment_id != ''
438
- uses: actions/github-script@v7
441
+ uses: actions/github-script@v9
439
442
  with:
440
443
  github-token: ${{ secrets.GITHUB_TOKEN }}
441
444
  script: |
@@ -576,7 +579,7 @@ EOF
576
579
  - name: 진행상황 - APK 빌드 완료
577
580
  id: progress_step2
578
581
  if: github.event_name == 'repository_dispatch' && needs.prepare-test-build.outputs.progress_comment_id != ''
579
- uses: actions/github-script@v7
582
+ uses: actions/github-script@v9
580
583
  with:
581
584
  github-token: ${{ secrets.GITHUB_TOKEN }}
582
585
  script: |
@@ -634,24 +637,24 @@ EOF
634
637
  BUILD_DATE=$(date '+%Y-%m-%d %H:%M:%S')
635
638
 
636
639
  cat > build-info.txt << EOF
637
- 테스트 APK 빌드 정보
640
+ 테스트 APK 빌드 정보
638
641
 
639
- 빌드 번호: #$BUILD_NUMBER
640
- EOF
642
+ 빌드 번호: #$BUILD_NUMBER
643
+ EOF
641
644
 
642
645
  if [ -n "$PR_NUMBER" ]; then
643
646
  cat >> build-info.txt << EOF
644
- PR 번호: #$PR_NUMBER
645
- EOF
647
+ PR 번호: #$PR_NUMBER
648
+ EOF
646
649
  fi
647
650
 
648
651
  cat >> build-info.txt << EOF
649
- 브랜치: $BRANCH_NAME
650
- 커밋: $COMMIT_SHORT
651
- 전체 커밋 해시: $COMMIT_SHA
652
- 빌드 날짜: $BUILD_DATE
652
+ 브랜치: $BRANCH_NAME
653
+ 커밋: $COMMIT_SHORT
654
+ 전체 커밋 해시: $COMMIT_SHA
655
+ 빌드 날짜: $BUILD_DATE
653
656
 
654
- EOF
657
+ EOF
655
658
 
656
659
  # 이슈 정보가 있으면 추가
657
660
  if [ -n "${{ needs.prepare-test-build.outputs.issue_number }}" ]; then
@@ -660,11 +663,11 @@ EOF
660
663
  ISSUE_URL="${{ needs.prepare-test-build.outputs.issue_url }}"
661
664
 
662
665
  cat >> build-info.txt << EOF
663
- 관련 이슈:
664
- - #$ISSUE_NUMBER: $ISSUE_TITLE
665
- - URL: $ISSUE_URL
666
+ 관련 이슈:
667
+ - #$ISSUE_NUMBER: $ISSUE_TITLE
668
+ - URL: $ISSUE_URL
666
669
 
667
- EOF
670
+ EOF
668
671
  fi
669
672
 
670
673
  echo "📋 빌드 정보 파일 생성 완료:"
@@ -674,19 +677,19 @@ EOF
674
677
  - name: Create build metadata file
675
678
  run: |
676
679
  cat > build-metadata.json << EOF
677
- {
678
- "pr_number": "${{ needs.prepare-test-build.outputs.pr_number }}",
679
- "build_number": "${{ needs.prepare-test-build.outputs.build_number }}",
680
- "issue_number": "${{ needs.prepare-test-build.outputs.issue_number }}",
681
- "branch_name": "${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref_name }}"
682
- }
683
- EOF
680
+ {
681
+ "pr_number": "${{ needs.prepare-test-build.outputs.pr_number }}",
682
+ "build_number": "${{ needs.prepare-test-build.outputs.build_number }}",
683
+ "issue_number": "${{ needs.prepare-test-build.outputs.issue_number }}",
684
+ "branch_name": "${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref_name }}"
685
+ }
686
+ EOF
684
687
  cat build-metadata.json
685
688
 
686
689
  # APK와 빌드 정보를 아티팩트로 업로드 (브랜치명 포함)
687
690
  - name: Upload APK and build info as Artifact
688
691
  id: upload_artifact
689
- uses: actions/upload-artifact@v4
692
+ uses: actions/upload-artifact@v7
690
693
  with:
691
694
  name: ${{ steps.apk_filename.outputs.artifact_name }}
692
695
  path: |
@@ -699,7 +702,7 @@ EOF
699
702
  - name: Record artifact upload time
700
703
  id: artifact_time
701
704
  if: github.event_name == 'repository_dispatch' && needs.prepare-test-build.outputs.progress_comment_id != ''
702
- uses: actions/github-script@v7
705
+ uses: actions/github-script@v9
703
706
  with:
704
707
  script: |
705
708
  const step2EndTime = parseInt('${{ steps.progress_step2.outputs.end_time }}');
@@ -755,7 +758,7 @@ EOF
755
758
  - name: Record Firebase upload time
756
759
  id: firebase_time
757
760
  if: needs.prepare-test-build.outputs.firebase_available == 'true' && github.event_name == 'repository_dispatch' && needs.prepare-test-build.outputs.progress_comment_id != ''
758
- uses: actions/github-script@v7
761
+ uses: actions/github-script@v9
759
762
  with:
760
763
  script: |
761
764
  const artifactEndTime = parseInt('${{ steps.artifact_time.outputs.end_time }}');
@@ -769,7 +772,7 @@ EOF
769
772
  # 진행 상황 최종 업데이트 - 성공
770
773
  - name: 진행 상황 최종 업데이트 - 성공
771
774
  if: success() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.prepare-test-build.outputs.progress_comment_id != ''
772
- uses: actions/github-script@v7
775
+ uses: actions/github-script@v9
773
776
  with:
774
777
  github-token: ${{ secrets.GITHUB_TOKEN }}
775
778
  script: |
@@ -882,7 +885,7 @@ EOF
882
885
  # 진행 상황 최종 업데이트 - 실패
883
886
  - name: 진행 상황 최종 업데이트 - 실패
884
887
  if: failure() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.prepare-test-build.outputs.progress_comment_id != ''
885
- uses: actions/github-script@v7
888
+ uses: actions/github-script@v9
886
889
  with:
887
890
  github-token: ${{ secrets.GITHUB_TOKEN }}
888
891
  script: |
@@ -155,7 +155,7 @@ jobs:
155
155
  - name: 진행 상황 댓글 생성
156
156
  id: comment
157
157
  if: github.event_name == 'pull_request'
158
- uses: actions/github-script@v7
158
+ uses: actions/github-script@v9
159
159
  with:
160
160
  github-token: ${{ secrets.GITHUB_TOKEN }}
161
161
  script: |
@@ -238,13 +238,13 @@ jobs:
238
238
  steps:
239
239
  - name: 분석 시작 시간 기록
240
240
  id: analyze_start
241
- uses: actions/github-script@v7
241
+ uses: actions/github-script@v9
242
242
  with:
243
243
  script: |
244
244
  core.setOutput('time', Date.now().toString());
245
245
 
246
246
  - name: Checkout repository
247
- uses: actions/checkout@v5
247
+ uses: actions/checkout@v7
248
248
 
249
249
  # .env 파일 생성
250
250
  - name: Create .env file
@@ -268,7 +268,7 @@ jobs:
268
268
 
269
269
  # Flutter 캐시
270
270
  - name: Cache Flutter dependencies
271
- uses: actions/cache@v4
271
+ uses: actions/cache@v6
272
272
  with:
273
273
  path: ~/.pub-cache
274
274
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles('**/pubspec.lock') }}
@@ -278,6 +278,9 @@ jobs:
278
278
  - name: Install dependencies
279
279
  run: |
280
280
  flutter pub get
281
+ if grep -q "build_runner" pubspec.yaml; then
282
+ dart run build_runner build --delete-conflicting-outputs
283
+ fi
281
284
  echo "✅ Dependencies installed"
282
285
 
283
286
  # Flutter Analyze 실행
@@ -292,7 +295,7 @@ jobs:
292
295
  - name: 분석 결과 기록
293
296
  id: result
294
297
  if: always()
295
- uses: actions/github-script@v7
298
+ uses: actions/github-script@v9
296
299
  with:
297
300
  script: |
298
301
  const analyzeStart = parseInt('${{ steps.analyze_start.outputs.time }}');
@@ -326,13 +329,13 @@ jobs:
326
329
  steps:
327
330
  - name: 빌드 시작 시간 기록
328
331
  id: build_start
329
- uses: actions/github-script@v7
332
+ uses: actions/github-script@v9
330
333
  with:
331
334
  script: |
332
335
  core.setOutput('time', Date.now().toString());
333
336
 
334
337
  - name: Checkout repository
335
- uses: actions/checkout@v5
338
+ uses: actions/checkout@v7
336
339
 
337
340
  # .env 파일 생성
338
341
  - name: Create .env file
@@ -356,7 +359,7 @@ jobs:
356
359
 
357
360
  # Flutter 캐시
358
361
  - name: Cache Flutter dependencies
359
- uses: actions/cache@v4
362
+ uses: actions/cache@v6
360
363
  with:
361
364
  path: ~/.pub-cache
362
365
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles('**/pubspec.lock') }}
@@ -364,7 +367,7 @@ jobs:
364
367
 
365
368
  # Gradle 캐시
366
369
  - name: Cache Gradle dependencies
367
- uses: actions/cache@v4
370
+ uses: actions/cache@v6
368
371
  with:
369
372
  path: |
370
373
  ~/.gradle/caches
@@ -377,11 +380,14 @@ jobs:
377
380
  - name: Install dependencies
378
381
  run: |
379
382
  flutter pub get
383
+ if grep -q "build_runner" pubspec.yaml; then
384
+ dart run build_runner build --delete-conflicting-outputs
385
+ fi
380
386
  echo "✅ Dependencies installed"
381
387
 
382
388
  # Java 설정
383
389
  - name: Set up Java
384
- uses: actions/setup-java@v4
390
+ uses: actions/setup-java@v5
385
391
  with:
386
392
  distribution: "temurin"
387
393
  java-version: ${{ env.JAVA_VERSION }}
@@ -398,12 +404,12 @@ jobs:
398
404
  chmod +x gradlew
399
405
  echo "✅ Gradle wrapper permissions set"
400
406
 
401
- # APK 빌드
407
+ # APK 빌드 (CI는 빌드 검증 목적이므로 서명 불필요한 debug 빌드 사용)
402
408
  - name: Build APK
403
409
  id: build
404
410
  run: |
405
- echo "📦 Flutter APK 빌드 시작..."
406
- flutter build apk --release
411
+ echo "📦 Flutter APK 빌드 시작 (debug)..."
412
+ flutter build apk --debug
407
413
  echo "✅ APK 빌드 완료"
408
414
  ls -la ./build/app/outputs/flutter-apk/ || true
409
415
 
@@ -411,7 +417,7 @@ jobs:
411
417
  - name: 빌드 결과 기록
412
418
  id: result
413
419
  if: always()
414
- uses: actions/github-script@v7
420
+ uses: actions/github-script@v9
415
421
  with:
416
422
  script: |
417
423
  const buildStart = parseInt('${{ steps.build_start.outputs.time }}');
@@ -445,17 +451,34 @@ jobs:
445
451
  steps:
446
452
  - name: 빌드 시작 시간 기록
447
453
  id: build_start
448
- uses: actions/github-script@v7
454
+ uses: actions/github-script@v9
449
455
  with:
450
456
  script: |
451
457
  core.setOutput('time', Date.now().toString());
452
458
 
453
459
  - name: Checkout repository
454
- uses: actions/checkout@v5
460
+ uses: actions/checkout@v7
455
461
 
456
462
  - name: Select Xcode version
457
463
  run: sudo xcode-select -s /Applications/Xcode_${{ env.XCODE_VERSION }}.app/Contents/Developer
458
464
 
465
+ - name: Install iOS device platform
466
+ env:
467
+ # xcode-select만으로는 서브프로세스에 전파되지 않아 명시적으로 지정
468
+ DEVELOPER_DIR: /Applications/Xcode_${{ env.XCODE_VERSION }}.app/Contents/Developer
469
+ run: |
470
+ echo "=== iPhoneOS.platform check ==="
471
+ ls "$DEVELOPER_DIR/Platforms/iPhoneOS.platform/" 2>/dev/null && echo "iPhoneOS.platform EXISTS" || echo "iPhoneOS.platform NOT FOUND"
472
+ echo "=== Installing MobileDevice packages ==="
473
+ sudo installer -pkg /Applications/Xcode_${{ env.XCODE_VERSION }}.app/Contents/Resources/Packages/MobileDevice.pkg -target /
474
+ sudo installer -pkg /Applications/Xcode_${{ env.XCODE_VERSION }}.app/Contents/Resources/Packages/MobileDeviceDevelopment.pkg -target /
475
+ echo "=== Accepting Xcode license ==="
476
+ sudo xcodebuild -license accept
477
+ echo "=== Initializing Xcode components ==="
478
+ xcrun simctl list >/dev/null 2>&1 || true
479
+ echo "=== Downloading iOS platform ==="
480
+ xcodebuild -downloadPlatform iOS
481
+
459
482
  # .env 파일 생성
460
483
  - name: Create .env file
461
484
  run: |
@@ -478,7 +501,7 @@ jobs:
478
501
 
479
502
  # Flutter 캐시
480
503
  - name: Cache Flutter dependencies
481
- uses: actions/cache@v4
504
+ uses: actions/cache@v6
482
505
  with:
483
506
  path: ~/.pub-cache
484
507
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles('**/pubspec.lock') }}
@@ -488,6 +511,9 @@ jobs:
488
511
  - name: Install dependencies
489
512
  run: |
490
513
  flutter pub get
514
+ if grep -q "build_runner" pubspec.yaml; then
515
+ dart run build_runner build --delete-conflicting-outputs
516
+ fi
491
517
  echo "✅ Dependencies installed"
492
518
 
493
519
  # Ruby 및 CocoaPods 설정
@@ -515,7 +541,7 @@ jobs:
515
541
  - name: 빌드 결과 기록
516
542
  id: result
517
543
  if: always()
518
- uses: actions/github-script@v7
544
+ uses: actions/github-script@v9
519
545
  with:
520
546
  script: |
521
547
  const buildStart = parseInt('${{ steps.build_start.outputs.time }}');
@@ -542,7 +568,7 @@ jobs:
542
568
 
543
569
  steps:
544
570
  - name: 최종 결과 댓글 업데이트
545
- uses: actions/github-script@v7
571
+ uses: actions/github-script@v9
546
572
  with:
547
573
  github-token: ${{ secrets.GITHUB_TOKEN }}
548
574
  script: |
@@ -82,7 +82,7 @@ jobs:
82
82
  steps:
83
83
  - name: 브랜치 존재 여부 사전 확인
84
84
  id: verify_branch
85
- uses: actions/github-script@v7
85
+ uses: actions/github-script@v9
86
86
  with:
87
87
  github-token: ${{ secrets.GITHUB_TOKEN }}
88
88
  script: |
@@ -138,7 +138,7 @@ jobs:
138
138
  id: progress
139
139
  if: github.event.client_payload.pr_number != ''
140
140
  continue-on-error: true
141
- uses: actions/github-script@v7
141
+ uses: actions/github-script@v9
142
142
  with:
143
143
  github-token: ${{ secrets.GITHUB_TOKEN }}
144
144
  script: |
@@ -203,7 +203,7 @@ jobs:
203
203
 
204
204
  steps:
205
205
  - name: Checkout repository
206
- uses: actions/checkout@v5
206
+ uses: actions/checkout@v7
207
207
  with:
208
208
  fetch-depth: 0
209
209
  ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref }}
@@ -319,13 +319,13 @@ jobs:
319
319
  echo "commit_hash=$COMMIT_SHORT" >> $GITHUB_OUTPUT
320
320
 
321
321
  cat > final_release_notes.txt << EOF
322
- 테스트 빌드 #$BUILD_NUMBER
322
+ 테스트 빌드 #$BUILD_NUMBER
323
323
 
324
- 브랜치: $BRANCH_NAME
325
- 커밋: $COMMIT_SHORT
326
- 날짜: $BUILD_DATE
324
+ 브랜치: $BRANCH_NAME
325
+ 커밋: $COMMIT_SHORT
326
+ 날짜: $BUILD_DATE
327
327
 
328
- EOF
328
+ EOF
329
329
 
330
330
  # 이슈 정보가 있으면 추가
331
331
  if [ -n "${{ steps.issue_info.outputs.issue_number }}" ]; then
@@ -334,11 +334,11 @@ EOF
334
334
  ISSUE_URL="${{ steps.issue_info.outputs.issue_url }}"
335
335
 
336
336
  cat >> final_release_notes.txt << EOF
337
- 관련 이슈:
338
- - #$ISSUE_NUMBER: $ISSUE_TITLE
339
- - URL: $ISSUE_URL
337
+ 관련 이슈:
338
+ - #$ISSUE_NUMBER: $ISSUE_TITLE
339
+ - URL: $ISSUE_URL
340
340
 
341
- EOF
341
+ EOF
342
342
  fi
343
343
 
344
344
  echo "📋 생성된 릴리즈 노트:"
@@ -347,14 +347,14 @@ EOF
347
347
  echo "----------------------------------------"
348
348
 
349
349
  - name: Upload release notes
350
- uses: actions/upload-artifact@v4
350
+ uses: actions/upload-artifact@v7
351
351
  with:
352
352
  name: release-notes
353
353
  path: final_release_notes.txt
354
354
  retention-days: 1
355
355
 
356
356
  - name: Upload project files
357
- uses: actions/upload-artifact@v4
357
+ uses: actions/upload-artifact@v7
358
358
  with:
359
359
  name: project-files
360
360
  path: |
@@ -368,7 +368,7 @@ EOF
368
368
  # 진행 상황 업데이트 - 준비 실패
369
369
  - name: 진행 상황 업데이트 - 준비 실패
370
370
  if: failure() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.notify-start.outputs.comment_id != ''
371
- uses: actions/github-script@v7
371
+ uses: actions/github-script@v9
372
372
  with:
373
373
  github-token: ${{ secrets.GITHUB_TOKEN }}
374
374
  script: |
@@ -435,7 +435,7 @@ EOF
435
435
  - name: 진행 상황 업데이트 - 준비 완료
436
436
  id: progress_step1
437
437
  if: github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.notify-start.outputs.comment_id != ''
438
- uses: actions/github-script@v7
438
+ uses: actions/github-script@v9
439
439
  with:
440
440
  github-token: ${{ secrets.GITHUB_TOKEN }}
441
441
  script: |
@@ -485,7 +485,7 @@ EOF
485
485
  core.setOutput('end_time', now.toString());
486
486
 
487
487
  - name: Checkout repository
488
- uses: actions/checkout@v5
488
+ uses: actions/checkout@v7
489
489
  with:
490
490
  fetch-depth: 0
491
491
  ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref }}
@@ -514,7 +514,7 @@ EOF
514
514
  xcodebuild -downloadPlatform iOS
515
515
 
516
516
  - name: Download project files
517
- uses: actions/download-artifact@v4
517
+ uses: actions/download-artifact@v8
518
518
  with:
519
519
  name: project-files
520
520
  path: .
@@ -535,14 +535,18 @@ EOF
535
535
  cache: true
536
536
 
537
537
  - name: Cache Flutter dependencies
538
- uses: actions/cache@v4
538
+ uses: actions/cache@v6
539
539
  with:
540
540
  path: ~/.pub-cache
541
541
  key: ${{ runner.os }}-flutter-pub-${{ hashFiles('**/pubspec.lock') }}
542
542
  restore-keys: ${{ runner.os }}-flutter-pub-
543
543
 
544
544
  - name: Install dependencies
545
- run: flutter pub get
545
+ run: |
546
+ flutter pub get
547
+ if grep -q "build_runner" pubspec.yaml; then
548
+ dart run build_runner build --delete-conflicting-outputs
549
+ fi
546
550
 
547
551
  - name: Set up Ruby
548
552
  uses: ruby/setup-ruby@v1
@@ -618,17 +622,17 @@ EOF
618
622
  - name: Create build metadata file
619
623
  run: |
620
624
  cat > build-metadata.json << EOF
621
- {
622
- "pr_number": "${{ needs.prepare-test-build.outputs.pr_number }}",
623
- "build_number": "${{ needs.prepare-test-build.outputs.build_number }}",
624
- "issue_number": "${{ needs.prepare-test-build.outputs.issue_number }}",
625
- "branch_name": "${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref_name }}"
626
- }
627
- EOF
625
+ {
626
+ "pr_number": "${{ needs.prepare-test-build.outputs.pr_number }}",
627
+ "build_number": "${{ needs.prepare-test-build.outputs.build_number }}",
628
+ "issue_number": "${{ needs.prepare-test-build.outputs.issue_number }}",
629
+ "branch_name": "${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref_name }}"
630
+ }
631
+ EOF
628
632
  cat build-metadata.json
629
633
 
630
634
  - name: Upload IPA artifact
631
- uses: actions/upload-artifact@v4
635
+ uses: actions/upload-artifact@v7
632
636
  with:
633
637
  name: ios-ipa
634
638
  path: |
@@ -640,7 +644,7 @@ EOF
640
644
  - name: 진행 상황 업데이트 - IPA 빌드 완료
641
645
  id: progress_step2
642
646
  if: success() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.notify-start.outputs.comment_id != ''
643
- uses: actions/github-script@v7
647
+ uses: actions/github-script@v9
644
648
  with:
645
649
  github-token: ${{ secrets.GITHUB_TOKEN }}
646
650
  script: |
@@ -695,7 +699,7 @@ EOF
695
699
  # 빌드 실패 시 progress 댓글 업데이트
696
700
  - name: 빌드 실패 시 progress 댓글 업데이트
697
701
  if: failure() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.notify-start.outputs.comment_id != ''
698
- uses: actions/github-script@v7
702
+ uses: actions/github-script@v9
699
703
  with:
700
704
  github-token: ${{ secrets.GITHUB_TOKEN }}
701
705
  script: |
@@ -763,7 +767,7 @@ EOF
763
767
 
764
768
  steps:
765
769
  - name: Checkout repository
766
- uses: actions/checkout@v5
770
+ uses: actions/checkout@v7
767
771
  with:
768
772
  fetch-depth: 0
769
773
  ref: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload.branch_name || github.ref }}
@@ -777,13 +781,13 @@ EOF
777
781
  echo "$API_KEY_BASE64" | base64 --decode > ~/.appstoreconnect/private_keys/AuthKey_${API_KEY_ID}.p8
778
782
 
779
783
  - name: Download IPA artifact
780
- uses: actions/download-artifact@v4
784
+ uses: actions/download-artifact@v8
781
785
  with:
782
786
  name: ios-ipa
783
787
  path: ios/build/ipa/
784
788
 
785
789
  - name: Download release notes
786
- uses: actions/download-artifact@v4
790
+ uses: actions/download-artifact@v8
787
791
  with:
788
792
  name: release-notes
789
793
  path: .
@@ -868,7 +872,7 @@ EOF
868
872
  # 진행 상황 최종 업데이트 - 성공
869
873
  - name: 진행 상황 최종 업데이트 - 성공
870
874
  if: success() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.notify-start.outputs.comment_id != ''
871
- uses: actions/github-script@v7
875
+ uses: actions/github-script@v9
872
876
  with:
873
877
  github-token: ${{ secrets.GITHUB_TOKEN }}
874
878
  script: |
@@ -931,7 +935,7 @@ EOF
931
935
  # 진행 상황 최종 업데이트 - 실패
932
936
  - name: 진행 상황 최종 업데이트 - 실패
933
937
  if: failure() && github.event_name == 'repository_dispatch' && github.event.client_payload.pr_number != '' && needs.notify-start.outputs.comment_id != ''
934
- uses: actions/github-script@v7
938
+ uses: actions/github-script@v9
935
939
  with:
936
940
  github-token: ${{ secrets.GITHUB_TOKEN }}
937
941
  script: |