[FIX] match 인증서 repo 클론 인증 토큰 누락 해결 #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: TestFlight Deploy | |
| on: | |
| pull_request: | |
| branches: [main] | |
| types: [closed] | |
| workflow_dispatch: | |
| concurrency: | |
| group: testflight-deploy | |
| cancel-in-progress: false | |
| jobs: | |
| # ────────────────────────────────────────────────────────── | |
| # Deploy (TestFlight) | |
| # ────────────────────────────────────────────────────────── | |
| deploy: | |
| # PR 이 머지된 경우 또는 수동 실행일 때만 동작 (단순 close 는 스킵) | |
| if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' | |
| runs-on: macos-15 | |
| env: | |
| # Appfile / Fastfile | |
| APP_IDENTIFIER: ${{ secrets.APP_IDENTIFIER }} | |
| APPLE_ID: ${{ secrets.APPLE_ID }} | |
| TEAM_ID: ${{ secrets.TEAM_ID }} | |
| # match | |
| MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
| MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }} | |
| # 인증서 repo(private) 클론용 토큰 — Deploy 스텝에서 MATCH_GIT_BASIC_AUTHORIZATION 로 인코딩 | |
| CONFIG_PRIVATE_REPO_TOKEN: ${{ secrets.CONFIG_PRIVATE_REPO_TOKEN }} | |
| # App Store Connect API (Fastfile 변수명) | |
| APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }} | |
| APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} | |
| APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }} | |
| # App Store Connect API (Matchfile 변수명 호환) | |
| APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} | |
| APP_STORE_CONNECT_API_KEY_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Select Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: latest-stable | |
| - name: Setup mise & tuist | |
| uses: jdx/mise-action@v2 | |
| # 커밋된 tuisttool 바이너리는 로컬 macOS 26 기준으로 빌드되어 macos-15 러너에서 로드 불가 | |
| # → 러너 OS에 맞게 소스에서 재컴파일 (Install dependencies·fastlane 의 ./tuisttool 호출 대비) | |
| - name: Build tuisttool | |
| run: swiftc TuistTool.swift -o tuisttool | |
| - name: Setup Ruby & fastlane | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: "3.3" | |
| bundler-cache: true | |
| - name: Download private xcconfig | |
| run: | | |
| echo "GITHUB_ACCESS_TOKEN=${CONFIG_PRIVATE_REPO_TOKEN}" > .env | |
| make download-privates | |
| # Matchfile 이 keychain_name("login") 을 고정 사용하므로 CI 에서 login 키체인을 준비 | |
| - name: Prepare keychain | |
| run: | | |
| security create-keychain -p "$MATCH_KEYCHAIN_PASSWORD" login.keychain-db || true | |
| security set-keychain-settings -lut 21600 login.keychain-db | |
| security unlock-keychain -p "$MATCH_KEYCHAIN_PASSWORD" login.keychain-db | |
| security list-keychains -d user -s login.keychain-db | |
| security default-keychain -s login.keychain-db | |
| # SPM 의존성 설치 (fastlane 의 ensure_workspace 가 generate 하기 전 선행) | |
| - name: Install dependencies | |
| run: ./tuisttool install | |
| - name: Deploy to TestFlight | |
| run: | | |
| # match 가 private 인증서 repo 를 클론할 때 사용할 basic auth 헤더 생성 | |
| # (base64 는 긴 토큰에서 줄바꿈이 삽입되므로 제거) | |
| export MATCH_GIT_BASIC_AUTHORIZATION=$(printf 'x-access-token:%s' "${CONFIG_PRIVATE_REPO_TOKEN}" | base64 | tr -d '\n') | |
| bundle exec fastlane beta |