Skip to content

TestFlight와 App Store 빌드의 private config SHA를 고정한다 #790

Description

@opficdev

배경

.github/actions/install-private-config/action.yml은 workflow 실행 시 비공개 저장소에서 Config.xcconfig와 환경별 GoogleService-Info.plist를 가져온다.

현재 TestFlight와 App Store workflow는 action의 기본 iOS ref를 사용하며 실제 checkout된 private config commit SHA를 기록하지 않는다. 두 실행 사이에 해당 branch가 변경되면 같은 iOS source를 사용해도 서로 다른 설정 기준으로 빌드될 수 있다.

TestFlight에서 사용한 private config commit을 기록하고 App Store에서도 정확히 같은 commit의 prod 설정을 사용하도록 보호 장치를 구성한다.

작업 범위

  • install-private-config action에 실제 checkout commit을 반환하는 output 추가
  • TestFlight workflow에서 사용할 private config ref를 입력받고 실제 SHA를 릴리스 manifest에 기록
  • App Store workflow가 TestFlight manifest의 private config SHA를 action의 ref로 전달
  • checkout 후 실제 SHA가 기록된 SHA와 다르면 build 전 실패 처리
  • workflow summary와 릴리스 산출물에 SHA 기록

같은 private config commit을 사용하더라도 TestFlight는 staging용 GoogleService-Info.plist, App Store는 prod용 GoogleService-Info.plist를 설치하는 기존 환경 분리를 유지한다.

보안 제약

  • Config.xcconfigGoogleService-Info.plist는 iOS 저장소나 artifact에 포함하지 않음
  • 설정 원문, OAuth 값, 인증 header와 비공개 저장소 URL을 로그에 출력하지 않음
  • 릴리스 기록에는 commit SHA와 환경만 저장

완료 조건

  • TestFlight에서 실제 사용한 private config SHA가 기록됨.
  • App Store가 같은 commit의 prod 설정 파일을 사용함.
  • 요청 SHA와 checkout SHA가 다르면 build가 시작되지 않음.
  • staging/prod 파일 선택과 기존 IPA 설정 검증이 유지됨.
  • 비공개 설정 원문이 저장소, 로그 및 artifact에 노출되지 않음.

제외 범위

  • 비공개 설정 파일의 Git 추적
  • staging/prod 설정값 통합
  • iOS source SHA 고정
  • Firebase 배포와 App Store 공개 예약

연관 이슈

  • opficdev/DevLog_Firebase#65

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions