지난 글에는 fastlane을 설치하고 기본적인 세팅을 했다. 현재는 testflight에 올라가 있고 내부 테스터와 외부 테스터에게 테스팅을 모두 완료한 상태이다. 이제 앱 스토어 심사까지 앱을 제출해보자.
배포 준비에 관련된 설정을 위해서 아래 명령어를 실행한다. 그럼 아래의 파일과 폴더가 생성된다.
fastlane deliver init
이 파일을 이용해서 deliver 할 수 있는데, 필자는 바로 fastfile에 해당 작업을 하려 한다. 관련한 건 실제 사용해보고 글을 올리도록 하겠다.
fastlane에서 스크릿샷을 찍고 올려주는 대박적인 기능이 있다. UI test를 이용해서 우리가 원하는 뷰로 이동하고 해당 뷰에서 캡처하는 방식인데, 원하는 시뮬레이터를 선택할 수도, 언어마다 다른 스크린샷을 찍도록 할 수도 있다. 필자는 이미 올라가있는 앱 스토어에 재배포이기 때문에 스킵을 한다. 아래 제드님 글을 참고!
이미 올라가있는 스크린샷을 받아올 수도 있다.
fastlane deliver download_screenshots
appstore에 등록할 때 정말 많은 정보를 기입해야 한다. 이 정보들이 metadata에 해당한다. 필자는 이미 올라가있는 앱의 메타데이터를 땡겨오겠다.
fastlane deliver download_metadata
처음 앱 정보들을 입력할 때는 직접 앱 정보를 먼저 기입하고 위의 다운로드 메타데이터를 하는 것을 추천한다.
desc "build app and release to App Store."
lane :release do |options|
if options[:v]
get_certificates
get_provisioning_profile
cocoapods(use_bundle_exec: false)
build_app(
configuration: "Release"
)
upload_to_app_store(
app_version: options[:v],
submit_for_review: true,
force: true,
automatic_release: true,
skip_screenshots: false,
screenshots_path: "./screenshots",
overwrite_screenshots: true,
skip_metadata: false,
metadata_path: "./metadata",
skip_app_version_update: false
)
slack(
message: "Appstore 배포에 성공했습니다!",
slack_url: "https://hooks.slack.com/services/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"
)
end
end
lane :release do |options|
if options[:v]
// fastlane release v:2.0.0
전에는 beta 였다면 이번에는 release이다. 특별히 옵션을 넣어서 fastlane을 실행할 때 옵션을 넣도록 했다.
build_app(
configuration: "Release"
)
빌드시 사용할 빌드 구성을 선택해준다. 현재 우리는 debug와 release 두 개가 있고 그 중 release 구성을 업로드 해주자. 이 빌드 구성으로 build setting이 되고 이 세팅으로 target이 최종 프로덕트가 된다.
upload_to_app_store(
)
일전에는 testflight에 업로드하는 명령어를 사용했다면 이번에는 appstore에 업로드하는 명령어를 사용한다.
app_version: options[:v]
skip_app_version_update: false
앱 버전 설정이다. 우리는 위에서 option으로 버전을 넣어주기로 했으므로 그 값이 들어간다. 그리고 우리가 적은 버전이 업데이트 되도록 설정한다.
submit_for_review: true,
automatic_release: true
앱 스토어에 리뷰 요청을 바로 할 것인지, 그리고 승인이 되면 자동으로 앱스토어에 제출할 것인지에 대한 세팅이다.
skip_screenshots: false,
screenshots_path: "./screenshots",
overwrite_screenshots: true,
itunesConnect에서 스크린샷을 올렸다면 자동으로 fastlane deliver download_metadata 을 실행했을 때 디렉토리가 자동으로 생상되어 굳이 작성할 필요가 없다.
skip_metadata: false,
metadata_path: "./metadata",
메타 데이터를 업로드 여부에 대한 질문과 파일 경로다.
fastlane도 기능이 많고 각종 기능을 다양하게 사용할 수 있다. 만약 큰 앱을 다룬다면 build configuration을 나누고 해당 구성당 어떻게 테스트를 배포하고 어떻게 프로덕트를 배포할 것인지 appfile 및 fastfile에서 분기를 준다거나, 코드 사이닝 관리를 위해 match를 사용한다던가, deliverfile을 잘 활용해서 배포에 특화된 lane 구성을 할 수 있게 하는 등... 아직 해볼게 많다. 좋은 경험을 시작으로 더 나은 경험을 쌓아가보자.