From 5e324d2f3e499bf27ba8ea15ddfaf8aa95b130eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Feb 2026 11:57:59 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix]=20Makefile=20base64=20=ED=8C=8C?= =?UTF-8?q?=EC=8B=B1=20=EB=B0=8F=20IPA=20=EA=B2=BD=EB=A1=9C=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `cut -d '=' -f2`가 base64 패딩의 `=`를 구분자로 인식하여 키 데이터가 잘리는 문제 수정 → `sed` 사용 - fastlane 실행 시 IPA_PATH가 상대경로로 전달되어 경로를 찾지 못하는 문제 수정 → 절대경로 사용 - env 서브모듈 최신화 Co-Authored-By: Claude Opus 4.6 --- Makefile | 18 +++++++++--------- git.environment-variables | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index e2e4957..ab160bf 100644 --- a/Makefile +++ b/Makefile @@ -76,7 +76,7 @@ setup-signing: @KEYSTORE_PASSWORD=$$(grep '^KEYSTORE_PASSWORD=' .env.prod | cut -d '=' -f2); \ KEY_PASSWORD=$$(grep '^KEY_PASSWORD=' .env.prod | cut -d '=' -f2); \ KEY_ALIAS=$$(grep '^KEY_ALIAS=' .env.prod | cut -d '=' -f2); \ - KEYSTORE_BASE64=$$(grep '^KEYSTORE_BASE64=' .env.prod | cut -d '=' -f2); \ + KEYSTORE_BASE64=$$(grep '^KEYSTORE_BASE64=' .env.prod | sed 's/^KEYSTORE_BASE64=//'); \ if [ -z "$$KEYSTORE_PASSWORD" ] || [ -z "$$KEY_PASSWORD" ] || [ -z "$$KEY_ALIAS" ] || [ -z "$$KEYSTORE_BASE64" ]; then \ echo "❌ .env.prod에 Android Signing 값이 누락되었습니다."; \ echo " 필요한 값: KEYSTORE_PASSWORD, KEY_PASSWORD, KEY_ALIAS, KEYSTORE_BASE64"; \ @@ -211,7 +211,7 @@ _ensure-env-prod: @KEYSTORE_PASSWORD=$$(grep '^KEYSTORE_PASSWORD=' .env.prod | cut -d '=' -f2); \ KEY_PASSWORD=$$(grep '^KEY_PASSWORD=' .env.prod | cut -d '=' -f2); \ KEY_ALIAS=$$(grep '^KEY_ALIAS=' .env.prod | cut -d '=' -f2); \ - KEYSTORE_BASE64=$$(grep '^KEYSTORE_BASE64=' .env.prod | cut -d '=' -f2); \ + KEYSTORE_BASE64=$$(grep '^KEYSTORE_BASE64=' .env.prod | sed 's/^KEYSTORE_BASE64=//'); \ if [ -n "$$KEYSTORE_PASSWORD" ] && [ -n "$$KEY_PASSWORD" ] && [ -n "$$KEY_ALIAS" ] && [ -n "$$KEYSTORE_BASE64" ]; then \ echo "storePassword=$$KEYSTORE_PASSWORD" > secrets/key.properties; \ echo "keyPassword=$$KEY_PASSWORD" >> secrets/key.properties; \ @@ -303,9 +303,9 @@ _load-asc-env: echo "❌ .env.prod 파일이 없습니다. make prepare-env-prod 를 먼저 실행하세요."; \ exit 1; \ fi - @ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | cut -d '=' -f2); \ - ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | cut -d '=' -f2); \ - ASC_KEY_BASE64=$$(grep '^ASC_KEY_BASE64=' .env.prod | cut -d '=' -f2); \ + @ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | sed 's/^ASC_KEY_ID=//'); \ + ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | sed 's/^ASC_ISSUER_ID=//'); \ + ASC_KEY_BASE64=$$(grep '^ASC_KEY_BASE64=' .env.prod | sed 's/^ASC_KEY_BASE64=//'); \ if [ -z "$$ASC_KEY_ID" ] || [ -z "$$ASC_ISSUER_ID" ] || [ -z "$$ASC_KEY_BASE64" ]; then \ echo "❌ .env.prod에 App Store Connect API 키 정보가 누락되었습니다."; \ echo " 필요한 값: ASC_KEY_ID, ASC_ISSUER_ID, ASC_KEY_BASE64"; \ @@ -335,8 +335,8 @@ deploy-ios-testflight: _ensure-env-prod _load-asc-env @# Fastlane 실행 (환경변수 전달: base64 디코딩하여 키 내용 전달) @export ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | cut -d '=' -f2); \ export ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | cut -d '=' -f2); \ - export ASC_KEY_CONTENT=$$(grep '^ASC_KEY_BASE64=' .env.prod | cut -d '=' -f2 | base64 --decode); \ - export IPA_PATH=$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ + export ASC_KEY_CONTENT=$$(grep '^ASC_KEY_BASE64=' .env.prod | sed 's/^ASC_KEY_BASE64=//' | base64 --decode); \ + export IPA_PATH=$$(pwd)/$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ cd ios && bundle exec fastlane beta @echo "✅ TestFlight 배포 완료!" @@ -351,8 +351,8 @@ deploy-ios-appstore: _ensure-env-prod _load-asc-env @# Fastlane 실행 (환경변수 전달: base64 디코딩하여 키 내용 전달) @export ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | cut -d '=' -f2); \ export ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | cut -d '=' -f2); \ - export ASC_KEY_CONTENT=$$(grep '^ASC_KEY_BASE64=' .env.prod | cut -d '=' -f2 | base64 --decode); \ - export IPA_PATH=$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ + export ASC_KEY_CONTENT=$$(grep '^ASC_KEY_BASE64=' .env.prod | sed 's/^ASC_KEY_BASE64=//' | base64 --decode); \ + export IPA_PATH=$$(pwd)/$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ cd ios && bundle exec fastlane release @echo "✅ App Store 제출 완료!" diff --git a/git.environment-variables b/git.environment-variables index 360f3f3..9a3e14d 160000 --- a/git.environment-variables +++ b/git.environment-variables @@ -1 +1 @@ -Subproject commit 360f3f3a6c1f1d85dc452b645c3507a0a812071f +Subproject commit 9a3e14d6fa2057c6ef3570016840ef249422ffa7 From dbf6c0e1eec04af64b4e2cf0ed998c94272e341a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Feb 2026 12:02:08 +0900 Subject: [PATCH 2/2] fix(pr-review): resolve review comments #2785547477, #2785547500 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - IPA 경로 빈 문자열 가드 추가 (testflight, appstore 모두) - ASC_KEY_ID, ASC_ISSUER_ID 파싱도 sed로 통일 Co-Authored-By: Claude Opus 4.6 --- Makefile | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ab160bf..556629a 100644 --- a/Makefile +++ b/Makefile @@ -333,10 +333,12 @@ deploy-ios-testflight: _ensure-env-prod _load-asc-env @# IPA 빌드 $(MAKE) _build-ios-ipa @# Fastlane 실행 (환경변수 전달: base64 디코딩하여 키 내용 전달) - @export ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | cut -d '=' -f2); \ - export ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | cut -d '=' -f2); \ + @export ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | sed 's/^ASC_KEY_ID=//'); \ + export ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | sed 's/^ASC_ISSUER_ID=//'); \ export ASC_KEY_CONTENT=$$(grep '^ASC_KEY_BASE64=' .env.prod | sed 's/^ASC_KEY_BASE64=//' | base64 --decode); \ - export IPA_PATH=$$(pwd)/$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ + IPA_FILE=$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ + if [ -z "$$IPA_FILE" ]; then echo "❌ IPA 파일을 찾을 수 없습니다. 빌드를 확인하세요."; exit 1; fi; \ + export IPA_PATH=$$(pwd)/$$IPA_FILE; \ cd ios && bundle exec fastlane beta @echo "✅ TestFlight 배포 완료!" @@ -349,10 +351,12 @@ deploy-ios-appstore: _ensure-env-prod _load-asc-env @# IPA 빌드 $(MAKE) _build-ios-ipa @# Fastlane 실행 (환경변수 전달: base64 디코딩하여 키 내용 전달) - @export ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | cut -d '=' -f2); \ - export ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | cut -d '=' -f2); \ + @export ASC_KEY_ID=$$(grep '^ASC_KEY_ID=' .env.prod | sed 's/^ASC_KEY_ID=//'); \ + export ASC_ISSUER_ID=$$(grep '^ASC_ISSUER_ID=' .env.prod | sed 's/^ASC_ISSUER_ID=//'); \ export ASC_KEY_CONTENT=$$(grep '^ASC_KEY_BASE64=' .env.prod | sed 's/^ASC_KEY_BASE64=//' | base64 --decode); \ - export IPA_PATH=$$(pwd)/$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ + IPA_FILE=$$(ls build/ios/ipa/*.ipa 2>/dev/null | head -1); \ + if [ -z "$$IPA_FILE" ]; then echo "❌ IPA 파일을 찾을 수 없습니다. 빌드를 확인하세요."; exit 1; fi; \ + export IPA_PATH=$$(pwd)/$$IPA_FILE; \ cd ios && bundle exec fastlane release @echo "✅ App Store 제출 완료!"