뚝딱뚝딱 모바일

[Flutter] Fastlane으로 배포 자동화를 해보자 (1) 본문

Flutter 지식

[Flutter] Fastlane으로 배포 자동화를 해보자 (1)

규석 2023. 11. 9. 18:15

안녕하세요...!

오늘은 Fastlane을 알아보겠습니다.


fastlane 두둥

https://docs.fastlane.tools/

 

fastlane docs

fastlane fastlane is the easiest way to automate beta deployments and releases for your iOS and Android apps. 🚀 It handles all tedious tasks, like generating screenshots, dealing with code signing, and releasing your application. You can start by creati

docs.fastlane.tools

Fastlane은 Android, iOS의 자동적인 스토어 업로드를 쉽게 지원해 주는 툴입니다. 

Flutter는 Google Play Console과 App Store Connect 두 곳 모두 올려야 하기에, 매번 업데이트할 때마다 불편함(귀찮음)을 느껴, 이번 기회에 찾아보고 적용하게 되었습니다.

 

대부분의 내용은 fastlane docs를 기초로 하고, 제가 설치하면서 겪은 내용들을 토대로 작성하였습니다. 약간씩의 다른 점이 존재할 수 있습니다...!

Fastlane 설치

먼저 설치부터 해보겠습니다. 먼저 Fastlane은 Ruby 2.5 이상의 버전에서 지원한다 하니, Ruby version부터 확인해 봅시다.

$ ruby --version

설치에는 여러 방법이 있습니다. Bundler, Homebrew, System Ruby + RubyGems 각각 활용하는 방법이 있는데, System Ruby는 권장하지 않는다고 합니다. 전 Homebrew를 통해 설치하였습니다.

brew install fastlane

Android 적용

먼저, Android부터 적용해보겠습니다. [가이드 문서]

Flutter project 내부의 android 폴더로 이동해서 init 해주겠습니다.

fastlane init

잠시 기다리면, package name을 묻기에, 알맞은 package name을 적어줍니다.

다음 질문으로 json secret file의 경로를 입력하라고 합니다.

대뜸 없이 뭔 json secret file? 인가 싶지만, 주체가 누구인지 확인도 없이 업로드시켜줄 순 없으니, 확인할 수 있는 키를 달라는 겁니다. 

Json Secret Key 만들기

먼저 현재 스토어에 올라온 프로젝트에 Google Developer API를 연동해주어야 합니다.

https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/?hl=ko

 

Google Cloud Platform

Sign in to continue to Google Cloud Platform

accounts.google.com

위 링크로 접속하여 연동해줍시다. 만약 Google Cloud Project가 없다면, 만든 후 해주시면 됩니다.

https://console.cloud.google.com/iam-admin/serviceaccounts?hl=ko

 

Google Cloud Platform

Sign in to continue to Google Cloud Platform

accounts.google.com

이번엔 이 링크로 들어가서 서비스 계정을 만들어줍니다.

출처 : fastlane docs

알맞은 이름을 적고 ID를 부여해 줍니다. 그럼 그걸 기반으로 한 email이 생깁니다. 복사해 주고, 계정을 만들어 줍니다.

서비스 계정 탭으로 돌아오면, 방금 만든 계정이 보일 겁니다. 이 계정을 클릭해서 들어가서, 키 탭으로 이동해 줍니다.

키 추가 버튼을 눌러 새 키 만들기를 눌러 줍니다. JSON과 P12 중 하나 고르라 하는데, JSON을 선택하여 만들고 다운로드하여줍니다.

그리고 위에서 복사한 계정을 Google Play Console로 이동하여, 사용자 및 권한 탭에서 신규 사용자 초대를 해줍니다.

권한 같은 경우에는, Fastlane Docs에서는 Admin (모든 권한)을 추천한다 합니다. 만약 권한을 좀 민감하게 다뤄야 할 것 같다 하시면, 출시 관련 권한만 허용하여 주셔도 됩니다. 

 

이제 이렇게 되면 드디어 Secret Json File을 만들었습니다...! 안전한 곳에 보관해 두고, 그 경로를 터미널에 입력해 줍니다.

터미널이 오류 없이 완료되었다고 뜨면, 만든 Secret Json File과 잘 연결되었다는 뜻입니다.

 

앱을 Play Store에 올릴 때는, 이미지, 스크린샷, 배너 등등 또 같이 올리기에 이에 대한 정보를 가져와줍시다.

fastlane supply init

 

이것들을 가져왔다면, 이제 스토어에 올려야 하니, fastfile의 lane을 수정해 올려봅시다.

(이 부분은 지극히 개인적인 내용이고, 본인 입맛에 맞게 작성하시면 됩니다. Docs에 잘 정리되어 있으니, 참고하시면 됩니다.)

default_platform(:android)

platform :android do
  desc "Deploy a new version to the Google Play"
  lane :deploy do
    sh "flutter build appbundle"
    upload_to_play_store(
	aab: "../build/app/outputs/bundle/release/app-release.aab",
    )
  end
end

저는 pubspec.yaml을 기준으로 버전 처리를 할 예정이기에, 먼저 flutter build appbundle을 실행시켜 주었습니다. 그 후 만들어진 앱 번들을 upload_to_play_store 함수에 태워 업로드하였습니다. 

 

이제 Fastfile 파일을 저장하고 fastlane deploy를 터미널에 실행시켜 주면....

야호!

성공적으로 업로드하였습니다! Google Play Console에서도 업로드된 걸 확인할 수 있습니다.

 

https://nkstar-ios.tistory.com/entry/Flutter-Fastlane%EC%9C%BC%EB%A1%9C-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94%EB%A5%BC-%ED%95%B4%EB%B3%B4%EC%9E%90-2

 

[Flutter] Fastlane으로 배포 자동화를 해보자 (2)

fastlane init https://nkstar-ios.tistory.com/entry/Flutter-Fastlane%EC%9C%BC%EB%A1%9C-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94%EB%A5%BC-%ED%95%B4%EB%B3%B4%EC%9E%90-1 [Flutter] Fastlane으로 배포 자동화를 해보자 (1) 안녕하세요...! 오

nkstar-ios.tistory.com