개발/Swift
iOS 앱 자동화 Fastlane Fastfile 작성 Cheatsheet
덤벨로퍼
2024. 4. 29. 17:30
프롬프트 활용 input 값 받아 사용하기
ex> 출시노트에 사용될 텍스트 or 테스터 이메일 받아오기
title = prompt(text: "출시 노트를 작성해 주세요\\n 개요: ")
show_update_popup = prompt(text: "업데이트 팝업 노출 여부: ", boolean: true)
description = prompt(text: "변경사항: ", multi_line_end_keyword: "END")
testers = prompt(text: "테스터 이메일 입력: ", multi_line_end_keyword: "END")
터미널에서 바로 입력하여 값 받아오기
lane :beta_release do |options|
version = options[:version]
number = options[:number]
//사용 fastlane beta_release version:1.1.1 number:3
다른 레인으로 값 전달 하기
상위 lane
upload_to_firebase(title: title, show_update_popup: show_update_popup, description: description, environment: "staging", testers: testers)
하위 lane
lane :upload_to_firebase do |options|
title = options[:title]
show_update_popup = options[:show_update_popup]
description = options[:description]
environment = options[:environment]
testers = options[:testers]
앱 버전, 빌드넘버 올리기
increment_version 액션 사용시 infoPlist 를 버전값으로 수정해서 깔끔하게 버전 변경 되지 않음
infoPlist 에서 버전값을 MARKETING_VERSION 으로 참조하고있어 맞지 않는 방식,
MARKETING_VERSION 와 CURRENT_PROJECT_VERSION 를 직접 수정하여 버전 세팅하도록 정의
desc "Set version and build number"
lane :set_version do |options|
version = options[:version]
number = options[:number]
project = Xcodeproj::Project.open("../xxxxxx.xcodeproj")//프로젝트명
xc_target = project.targets.find { |target| target.name == "xxxxxx" } //타겟명
xc_target.build_configurations.each { |build_configuration|
unless version.nil? //input 값으로 version 정보 넣어줬을때만 수정
build_configuration.build_settings["MARKETING_VERSION"] = version //여기서 바꿔줌
end
unless number.nil?
build_configuration.build_settings["CURRENT_PROJECT_VERSION"] = number
end
}
project.save()
end
해당 하는 set_version 레인을 호출 후에 build_app() 액션 불러주면 됨
set_version(options)
build_app(workspace: "xxxxxx.xcworkspace",
scheme: "xxxxxxscheme",
configuration: "Release",
export_method: "app-store")
테스트플라이트 등록
upload_to_testflight(app_identifier: "번들아이디",
skip_waiting_for_build_processing: true)
이때 apple id , 비밀번호 정보가 없으면 authorization 에러 가 발생
[Application Loader Error Output]: Unable to upload archive. Failed to get authorization for username 'XXXX' and password. (
필요한데 해당 정보를 .env 파일에 정리 해줘야함 (https://appleid.apple.com/account/manage 에서 앱 암호 발급후 )
//.env
FASTLANE_USER = "애플아이디 이메일"
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD = "앱 암호"