소개
Fastlane은 루비 기반 클라이언트 자동빌드를 위한 오픈 소스 입니다.
만약 IOS에서 활용한다면 TestFlight 나 Appstore 업로드를 커맨드 라인으로 수행할 수 있고 또한 Code Signing 도 쉽게 관리할수 있습니다.
새로운 버전의 앱을 업데이트 한다고 가정하면, 그 일련의 과정들이 번거롭고 개발자가 일일히 신경 써야 하는 측면이 많습니다. 보통은 아래와 같은 배포과정을 거쳐야합니다.
- 앱스토어 커넥트에서 다음버전을 생성하고 필요하다면 미리 테스트플라이트에 업로드하여 새루오누 버전에 대한 빌드 검수를 받아놓는다.
- Info.plist 기입된 앱 버전과 빌드 번호를 증가 시켜야하며, 프로젝트의 타깃이 여러개만 모두 체크해서 동일하게 맞추어야 한다.
- 필요하다면 단위테스트 및 UI 테스트를 진행한다.
- Validation 을 체크하여 한참을 기다린 후 패스가 되면 프로비져닝 프로파일을 가지고 실제 빌드 및 테스트 플라이트(앱스토어)에 업로드를 한다(또 한참 기다린다).
- 테스트 플라이트에 완료되면 앱스토어 커넥트에서 해당 버전에 대한 Discratiopn 을 작성하고 배포 옵션을 선택하여 스토어에 실제 배포를 시작한다.
fastlane은 위의 복잡한 과정을 손쉽게 자동화 해주는 장점을 가지고 있습니다.
Fastlane 설정
fastlane 설치 후 프로젝트 폴더에서 fastlane init으로 설정을 시작합니다.
위와같이 여러 선택사항이 있지만 저는 여기서는 TestFlight 까지만 업로드 하고자 2번을 선택합니다.
그 다음에는 Apple 로그인을 위한 화면입니다. Apple store connect의 로그인 아이디와 패스워드를 모두 전달합니다. 그리고 앱에 대한 정보 이중인증 정보 등을 모두 전달하고 나면..
설정이 완료되고 ./fastlane 폴더에 FastFile 과 Appfile 이 생성 됩니다.
Fastfile 사용법
빌드 및 테스트 플라이트 배포를 위해서 fastfile에 아래와 같이 작성하면 됩니다.
desc "upload a new build to the TestFlight"
lane :beta do
increment_build_number(
build_number: "5")
build_app(
export_xcargs: "-allowProvisioningUpdates",
scheme: "ci-demo-ios"
)
upload_to_testflight
end
fastlane beta
이후 fastlane beta 터미널에 입력하면 위 스크립트를 실행합니다.
만약 스토어까지 베포를 하려면 ..
desc "upload a new build to the App Store"
lane :release do
increment_build_number(
build_number: "5")
build_app(
export_xcargs: "-allowProvisioningUpdates",
scheme: "ci-demo-ios"
)
upload_to_app_store
위와 같이 스트립트를 변경 후 “fastlane release”를 입력 하면 됩니다.
또한 아래와 같이 해상도별로 스크린샷을 남겨 손쉽게 UI test를 할 수 있습니다.
(시뮬레이터로 해상도마다 일일히 확인해야하는 번거로움을 덜어준다.)
이 밖에도 여러 액션과 환경을 설정 할수 있으니 자세한 내용은 fastlane docs 에서 확인 하시면 됩니다.
결론
저는 Gitlab Runner 에서 fastlane까지 바로 동작하도록 설정을 했습니다. 이 과정에서 signing 오류, 2factor 인증 오류, multi developer Team 오류 등 여러 난관(?)에 봉착했습니다.
하지만 친절하게 해결방안의 링크를 제시해주고 결국에는 모두 설정이 완료되어 TestFlight에 자동으로 등록이 되었습니다. 앞으로 요긴하게 활용할 수 있을 것 같습니다.
Gitlab Runner의 수 많은 실패 끝에 드디어 Passed !!