배경
.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.xcconfig와 GoogleService-Info.plist는 iOS 저장소나 artifact에 포함하지 않음
- 설정 원문, OAuth 값, 인증 header와 비공개 저장소 URL을 로그에 출력하지 않음
- 릴리스 기록에는 commit SHA와 환경만 저장
완료 조건
제외 범위
- 비공개 설정 파일의 Git 추적
- staging/prod 설정값 통합
- iOS source SHA 고정
- Firebase 배포와 App Store 공개 예약
연관 이슈
opficdev/DevLog_Firebase#65
배경
.github/actions/install-private-config/action.yml은 workflow 실행 시 비공개 저장소에서Config.xcconfig와 환경별GoogleService-Info.plist를 가져온다.현재 TestFlight와 App Store workflow는 action의 기본
iOSref를 사용하며 실제 checkout된 private config commit SHA를 기록하지 않는다. 두 실행 사이에 해당 branch가 변경되면 같은 iOS source를 사용해도 서로 다른 설정 기준으로 빌드될 수 있다.TestFlight에서 사용한 private config commit을 기록하고 App Store에서도 정확히 같은 commit의 prod 설정을 사용하도록 보호 장치를 구성한다.
작업 범위
install-private-configaction에 실제 checkout commit을 반환하는 output 추가ref로 전달같은 private config commit을 사용하더라도 TestFlight는 staging용
GoogleService-Info.plist, App Store는 prod용GoogleService-Info.plist를 설치하는 기존 환경 분리를 유지한다.보안 제약
Config.xcconfig와GoogleService-Info.plist는 iOS 저장소나 artifact에 포함하지 않음완료 조건
제외 범위
연관 이슈
opficdev/DevLog_Firebase#65