|
| 1 | +# This workflow will build a Swift project |
| 2 | +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift |
| 3 | + |
| 4 | +name: iOS CD (Stage -> TestFlight) |
| 5 | + |
| 6 | +on: |
| 7 | + push: |
| 8 | + branches: ["env/stage"] |
| 9 | + |
| 10 | +jobs: |
| 11 | + deploy-testflight: |
| 12 | + runs-on: macos-15 |
| 13 | + |
| 14 | + environment: TestFlight-Deploy |
| 15 | + |
| 16 | + steps: |
| 17 | + - name: Checkout Code |
| 18 | + uses: actions/checkout@v4 |
| 19 | + |
| 20 | + - name: Select Xcode |
| 21 | + uses: maxim-lobanov/setup-xcode@v1 |
| 22 | + with: |
| 23 | + xcode-version: "latest-stable" |
| 24 | + |
| 25 | + - name: Install iOS SDK (Retry up to 3 times) |
| 26 | + run: | |
| 27 | + for i in {1..3}; do |
| 28 | + echo "Attempt $i to download iOS platform..." |
| 29 | + sudo xcodebuild -downloadPlatform iOS && break || { |
| 30 | + if [ $i -lt 3 ]; then |
| 31 | + echo "Attempt $i failed. Retrying in 10 seconds..." |
| 32 | + sleep 10 |
| 33 | + else |
| 34 | + echo "All 3 attempts failed. Moving on (continue-on-error is set)." |
| 35 | + exit 1 |
| 36 | + fi |
| 37 | + } |
| 38 | + done |
| 39 | + |
| 40 | + - name: Create Real Configs |
| 41 | + run: | |
| 42 | + # Xcode가 찾는 경로: /Users/runner/work/Atcha-iOS/Atcha-iOS/StageConfig.xcconfig |
| 43 | + # checkout 후 현재 위치가 이미 그 경로이므로 바로 생성 |
| 44 | + echo "${{ secrets.LIVE_CONFIG_CONTENT }}" | base64 --decode > "LiveConfig.xcconfig" |
| 45 | + echo "${{ secrets.DEV_CONFIG_CONTENT }}" | base64 --decode > "DevConfig.xcconfig" |
| 46 | + echo "${{ secrets.STAGE_CONFIG_CONTENT }}" | base64 --decode > "StageConfig.xcconfig" |
| 47 | + echo "${{ secrets.BASE_CONFIG_CONTENT }}" | base64 --decode > "BaseConfig.xcconfig" |
| 48 | + |
| 49 | + echo "=== 파일 위치 확인 ===" |
| 50 | + pwd |
| 51 | + ls *.xcconfig |
| 52 | + echo "=== StageConfig 내용 ===" |
| 53 | + cat StageConfig.xcconfig |
| 54 | + |
| 55 | + - name: Install Fastlane |
| 56 | + run: bundle install |
| 57 | + |
| 58 | + - name: Build and Upload to TestFlight |
| 59 | + env: |
| 60 | + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} |
| 61 | + MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_TOKEN }} |
| 62 | + APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }} |
| 63 | + APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.ASC_KEY_ID }} |
| 64 | + APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.ASC_KEY_CONTENT }} |
| 65 | + GYM_SCHEME: "Atcha-Stage" |
| 66 | + GYM_CONFIGURATION: "Release" |
| 67 | + GYM_EXPORT_METHOD: "app-store" |
| 68 | + GYM_XC_ARGS: "PROVISIONING_PROFILE_SPECIFIER='match AppStore com.atcha.iOS' CODE_SIGN_STYLE=Manual" |
| 69 | + FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 |
| 70 | + |
| 71 | + # Fastfile에 작성된 테플 업로드용 lane 실행 (이름은 설정하신 대로 맞춰주세요) |
| 72 | + run: bundle exec fastlane beta |
0 commit comments