배경
TestFlight와 App Store는 같은 iOS 코드베이스를 사용하지만 서로 다른 workflow와 build configuration으로 별도 빌드한다.
현재 .github/workflows/testflight.yml과 .github/workflows/appstore.yml은 각각 실행 시점에 선택된 ref를 checkout한다. TestFlight 검증 이후 branch에 새 commit이 추가되면 App Store workflow가 검증하지 않은 코드를 포함할 수 있다.
추가 코드 검토나 TestFlight 재검증을 수행하는 대신, App Store Release build가 성공한 TestFlight 실행에서 검증한 정확한 iOS SHA를 사용하도록 보호 장치를 구성한다.
작업 범위
- TestFlight workflow가 실제 checkout한
github.sha와 workflow run ID를 릴리스 manifest에 기록
- TestFlight 업로드와 build가 성공한 경우에만 해당 manifest를 검증 결과로 사용
- App Store workflow가 검증된 TestFlight run 또는 manifest를 입력으로 받도록 구성
- App Store
actions/checkout이 manifest의 정확한 iOS SHA를 checkout하도록 변경
- checkout 후
HEAD가 기록된 SHA와 다르면 build 전 실패 처리
- App Store workflow summary와 릴리스 산출물에 사용한 iOS SHA 기록
임의로 입력한 SHA만으로 “TestFlight 검증 완료”로 간주하지 않는다. 성공한 TestFlight workflow 실행과 연결된 SHA임을 확인한다.
완료 조건
제외 범위
- Staging IPA를 App Store IPA로 재사용
- private config SHA 고정
- build number 동시 실행 제어
- Firebase 배포와 App Store 공개 예약
연관 이슈
opficdev/DevLog_Firebase#65
배경
TestFlight와 App Store는 같은 iOS 코드베이스를 사용하지만 서로 다른 workflow와 build configuration으로 별도 빌드한다.
현재
.github/workflows/testflight.yml과.github/workflows/appstore.yml은 각각 실행 시점에 선택된 ref를 checkout한다. TestFlight 검증 이후 branch에 새 commit이 추가되면 App Store workflow가 검증하지 않은 코드를 포함할 수 있다.추가 코드 검토나 TestFlight 재검증을 수행하는 대신, App Store Release build가 성공한 TestFlight 실행에서 검증한 정확한 iOS SHA를 사용하도록 보호 장치를 구성한다.
작업 범위
github.sha와 workflow run ID를 릴리스 manifest에 기록actions/checkout이 manifest의 정확한 iOS SHA를 checkout하도록 변경HEAD가 기록된 SHA와 다르면 build 전 실패 처리임의로 입력한 SHA만으로 “TestFlight 검증 완료”로 간주하지 않는다. 성공한 TestFlight workflow 실행과 연결된 SHA임을 확인한다.
완료 조건
제외 범위
연관 이슈
opficdev/DevLog_Firebase#65