Skip to content
Closed
50 changes: 33 additions & 17 deletions .github/workflows/ios-cd-stage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ name: iOS CD (Stage -> TestFlight)
on:
# develop이 아닌 env/stage 브랜치에 코드가 push 되거나 PR이 병합될 때 트리거됩니다.
pull_request:
branches: ["env/stage"]
branches: ["env/dev", "env/stage"]

jobs:
deploy-testflight:
Expand All @@ -19,29 +19,40 @@ jobs:
steps:
- name: Checkout Code
uses: actions/checkout@v4
# env/stage 브랜치를 기반으로 테플을 올리기 위해 명시적으로 체크아웃합니다.
with:
ref: env/stage

- name: Select Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "16.2"

- name: Install iOS SDK
run: sudo xcodebuild -downloadPlatform iOS

- name: Create Real Configs (테플용 실제 설정)
- name: Install iOS SDK (Retry up to 3 times)
run: |
for i in {1..3}; do
echo "Attempt $i to download iOS platform..."
sudo xcodebuild -downloadPlatform iOS && break || {
if [ $i -lt 3 ]; then
echo "Attempt $i failed. Retrying in 10 seconds..."
sleep 10
else
echo "All 3 attempts failed. Moving on (continue-on-error is set)."
exit 1
fi
}
done

- name: Create Real Configs
run: |
mkdir -p Atcha-iOS/Atcha-iOS
# Xcode가 찾는 경로: /Users/runner/work/Atcha-iOS/Atcha-iOS/StageConfig.xcconfig
# checkout 후 현재 위치가 이미 그 경로이므로 바로 생성
echo "${{ secrets.STAGE_CONFIG_CONTENT }}" | base64 --decode > "StageConfig.xcconfig"
echo "${{ secrets.BASE_CONFIG_CONTENT }}" | base64 --decode > "BaseConfig.xcconfig"

echo "=== 파일 위치 확인 ==="
pwd
ls *.xcconfig
echo "=== StageConfig 내용 ==="
cat StageConfig.xcconfig

# ⚠️ 주의: 테플에 올라가는 앱은 실제 동작해야 하므로
# Dummy가 아닌 '진짜 환경 변수'가 들어간 Config 파일을 만들어야 합니다.
# (GitHub Secrets에 진짜 Config 내용을 텍스트로 넣어두고 빼서 쓰는 방식을 추천합니다)
echo "${{ secrets.STAGE_CONFIG_CONTENT }}" > "Atcha-iOS/Atcha-iOS/StageConfig.xcconfig"
echo "${{ secrets.BASE_CONFIG_CONTENT }}" > "Atcha-iOS/Atcha-iOS/BaseConfig.xcconfig"
# 필요에 따라 다른 Config도 추가

- name: Install Fastlane
run: bundle install

Expand All @@ -51,7 +62,12 @@ jobs:
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_TOKEN }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.ASC_KEY_ID }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.ASC_PRIVATE_KEY }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.ASC_KEY_CONTENT }}
GYM_SCHEME: "Atcha-Stage"
GYM_CONFIGURATION: "Release"
GYM_EXPORT_METHOD: "app-store"
GYM_XC_ARGS: "PROVISIONING_PROFILE_SPECIFIER='match AppStore com.atcha.iOS' CODE_SIGN_STYLE=Manual"
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120

# Fastfile에 작성된 테플 업로드용 lane 실행 (이름은 설정하신 대로 맞춰주세요)
run: bundle exec fastlane beta
Loading