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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/payload/scripts/__pycache__/changelog_manager.cpython-314.pyc +0 -0
- package/payload/scripts/__pycache__/version_manager.cpython-314.pyc +0 -0
- package/payload/scripts/version_manager.py +7 -0
- package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +1 -1
- package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +1 -1
- package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +1 -1
- package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +1 -1
- package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +1 -1
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +26 -15
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +37 -23
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +10 -7
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +43 -40
- package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +45 -19
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +39 -35
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +33 -22
- package/payload/workflows/flutter/PROJECT-FLUTTER-SUH-LAB-APP-BUILD-TRIGGER.yaml +9 -9
- package/payload/workflows/next/PROJECT-NEXT-CI.yaml +6 -6
- package/payload/workflows/next/PROJECT-NEXT-CICD.yaml +6 -6
- package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +1 -1
- package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +27 -27
- package/payload/workflows/python/PROJECT-PYTHON-SIMPLE-CICD.yaml +1 -1
- package/payload/workflows/react/PROJECT-REACT-CI.yaml +6 -6
- package/payload/workflows/react/PROJECT-REACT-CICD.yaml +6 -6
- package/payload/workflows/spring/PROJECT-SPRING-GITHUB-PACKAGES-PUBLISH.yml +2 -2
- package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-CI.yml +5 -5
- package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-PUBLISH.yml +2 -2
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-NGINX-CICD.yaml +3 -3
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-TRAEFIK-CICD.yaml +3 -3
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +36 -36
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-SIMPLE-CICD.yaml +3 -3
- package/src/commands/interactive.js +4 -3
- package/src/core/detect-fs.js +8 -1
- package/src/core/detect.js +39 -0
- package/src/index.js +3 -3
- 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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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 --
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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:
|
|
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
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
938
|
+
uses: actions/github-script@v9
|
|
935
939
|
with:
|
|
936
940
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
937
941
|
script: |
|