본문 바로가기
개발/swift

fastlane을 적용하여 앱스토어에 앱 배포하기(업데이트) #2

by 꼬마상어 2018. 5. 29.
반응형

fastlane을 적용하여 앱스토어에 앱 업데이트

이번 섹션은 앱 출시 후 업데이트에 관해 설명하고 있습니다.

이전 튜토리얼에 이어서 참고하시면 됩니다 ^^

 

튜토리얼

우선 fastlane이 setup되어있는 상태라고 가정하고 튜토리얼을 작성할 예정입니다. fastlane이 해당 프로젝트에 setup되지 않은 분은 fastlane을 적용한 QA 프로세스 자동화 게시물의 초반부분을 참고해주세요!

Release note 수정

앱의 업데이트 사항을 /fastlane/metadata/ko/release_notes 에 작성합니다.

 

Build, Version 변경

앱을 업데이트 하기 위해서는 빌드 넘버와 앱스토어에 노출될 버전 넘버를 변경해야 합니다.

이건 직접 프로젝트 내에서 수정하여도 되지만, fastfile 내에서도 아래와 같은 커맨드를 작성하여 버전을 올릴 수 있습니다.

increment_version_number
increment_build_number

 

여기서 주의사항은

Version은 A.B.C 형태로 작성되어 있어야 에러를 뿜지 않습니다.

Bundle은 agvtool이라는 것을 사용하고 있기 때문에, 최초에 한번 아래와 같은 셋팅 과정을 거쳐야 정상적으로 버전이 올라갑니다.

https://developer.apple.com/library/content/qa/qa1827/_index.html

 

Build후 업로드

이제 다왔습니다!

자동화 하기 전에는 itunesConnect에서 해당 버전을 만들어야지만 빌드를 업로드 할 수 있었는데요.

아래 deliver에서 앱버전을 옵션으로 주지 않으면, info.plist에 작성된 version에 따라 업로드 해당 버전이 생성됩니다.

빌드하고 itunesConnect에 전달하는 코드는 1 섹션에서 작성된것과 동일합니다.

  gym(scheme: "TodayDo", 
	  export_method: "app-store")

  deliver(
	# 메타데이터와 빌드파일을 업로드 후 자동으로 제출 유무
  	submit_for_review: true, 
  	force: true, 

	# 자동으로 출시 여부에 대한 옵션입니
	automatic_release: false,
	
	# 만약 메타 데이터만 itunesConnect에 업로드하고싶다면, 아래의 옵션을 true로 두어 .ipa 파일이 업로드 되지 않도록 합니다.
    skip_binary_upload: false,

	# 메타데이터의 filePath를 입력
  	metadata_path: "./metadata",
    
    # 자동 릴리즈하는 옵션
    automatic_release: true,
    
	# itunesConnect에서 스크린샷을 올렸다면 자동으로 fastlane deliver download_metadata 을 실행했을 때 디렉토리가 자동으로 생상되어 굳이 작성할 필요가 없습니다.
	# 만약 앱스토어용 스크린샷을 메타파일에서 폴더를 따로 생성해서 자동으로 인지하지 못하는 디렉토리에 있다면 filePath를 적어줍니다.
    screenshots_path:  "./screenshots",
	
	# 앱 버전을 생성하거나 수정합니다.
	app_version: "1.0.2",
	skip_app_version_update: false,

	# 메타 데이터를 업로드 하지 않는가에 대한 옵션입니다. 스크린샷은 메타데이터와 별개로 업로드 됩니다.
	skip_metadata: false,

	# 심사 시, IDFA(애플 광고 식별자)에 대한 정보입니다.
    	submission_information: {
    	  add_id_info_limits_tracking: true,
    	  add_id_info_serves_ads: true,
     	  add_id_info_tracks_action: true,
     	  add_id_info_tracks_install: true,
   	  add_id_info_uses_idfa: true,
    	  content_rights_has_rights: true,
    	  content_rights_contains_third_party_content: true,
     	  export_compliance_platform: 'ios',
    	  export_compliance_compliance_required: false,
    	  export_compliance_encryption_updated: false,
     	  export_compliance_app_type: nil,
    	  export_compliance_uses_encryption: false,
     	  export_compliance_is_exempt: false,
     	  export_compliance_contains_third_party_cryptography: false,
    	  export_compliance_contains_proprietary_cryptography: false,
     	  export_compliance_available_on_french_store: false
   	 }
  )

 

기다리기.........

 # 전체 코드 
  lane :update do

    sync_code_signing(type: "appstore")
    
    increment_build_number
    increment_version_number
    
    gym(scheme: "TodayDo", 
	    export_method: "app-store")
    
    deliver(
	# 메타데이터와 빌드파일을 업로드 후 자동으로 제출 유무
  	submit_for_review: true, 
  	force: true, 

	# 자동으로 출시 여부에 대한 옵션입니
	automatic_release: true,
	
	# 만약 메타 데이터만 itunesConnect에 업로드하고싶다면, 아래의 옵션을 true로 두어 .ipa 파일이 업로드 되지 않도록 합니다.
    skip_binary_upload: false,

	# 메타데이터의 filePath를 입력
  	metadata_path: "./metadata", 

	# itunesConnect에서 스크린샷을 올렸다면 자동으로 fastlane deliver download_metadata 을 실행했을 때 디렉토리가 자동으로 생상되어 굳이 작성할 필요가 없습니다.
	# 만약 앱스토어용 스크린샷을 메타파일에서 폴더를 따로 생성해서 자동으로 인지하지 못하는 디렉토리에 있다면 filePath를 적어줍니다.
    screenshots_path:  "./screenshots",
	
	# 앱 버전을 생성하거나 수정합니다.
	app_version: "1.0",
	skip_app_version_update: false,

	# 메타 데이터를 업로드 하지 않는가에 대한 옵션입니다. 스크린샷은 메타데이터와 별개로 업로드 됩니다.
	skip_metadata: false,

	# 심사 시, IDFA(애플 광고 식별자)에 대한 정보입니다.
    	submission_information: {
    	  add_id_info_limits_tracking: true,
    	  add_id_info_serves_ads: true,
     	  add_id_info_tracks_action: true,
     	  add_id_info_tracks_install: true,
   	      add_id_info_uses_idfa: true,
    	  content_rights_has_rights: true,
    	  content_rights_contains_third_party_content: true,
     	  export_compliance_platform: 'ios',
    	  export_compliance_compliance_required: false,
    	  export_compliance_encryption_updated: false,
     	  export_compliance_app_type: nil,
    	  export_compliance_uses_encryption: false,
     	  export_compliance_is_exempt: false,
     	  export_compliance_contains_third_party_cryptography: false,
    	  export_compliance_contains_proprietary_cryptography: false,
     	  export_compliance_available_on_french_store: false
   	 }
  )
  end

위와같은 과정으로 앱을 업데이트 하는 모든 과정 lane을 작성해두었습니다.

앱 업데이트 시 fastlane update만 터미널에 작성하고 티타임을 즐기다 오면 자동으로 심사 제출에 성공할 것입니다!

반응형

댓글