Study + Daily = Steadily 자세히보기

Development/Android

Android 배포자동화(fastlane + github actions) - Part.1

레카아범 2022. 3. 30. 22:33
반응형

어느덧 이직한지도 약 3주가되고, 새로운 프로젝트 준비기간에 돌입했다.

MVP(Minimum Viable Product / 최소기능제품)를 정의하고, 그에 따른 구체적인 기획 등을 논의하는 와중에 나는 MVP를 통해 어떤 기능들이 들어갈지를 예측하고 그에 맞는 프레임워크나 라이브러리 등을 찾아보고 비교하고 있다.

 

앞서 말했다시피, MVP 개발을 통해 서비스의 살을 붙여나갈 예정이므로 예상컨데 CI/CD, 특히 짧은 sprint를 통한 지속적인 통합(Continuous Integration)은 선택이 아닌 필수요소가 될 것이다. 

이에 대비하기 위해, fastlane과 github actions를 이용하여 배포 자동화를 구축하기까지의 과정을 기록하려 한다.

 

가능하다면 차후 스터디를 통해 CI 환경에서의 테스트까지 구축해보고 싶은 바람이다.

 

 


fastlane 설치

fastlane이란?

- Android, iOS 배포 단순화(simplifying)을 목적으로 하는 오픈소스 플랫폼

 

fastlane이 할 수 있는것

  • 스크린샷 자동화
  • 베타 배포
  • 앱스토어 배포
  • 코드 서명

한마디로 배포를 위해 해야하는 일련의 과정들을 자동화 해준다는 것이다.

나는 이번에 처음알게됐지만, iOS 개발자들이라면 모를래야 모를 수 없는 앱이라고 한다(믿거나 말거나)

 

그렇다면 Android는 iOS에 비해 최적화가 안된건 아닐까 하는 생각이 들었지만, 이미 Firebase에 fastlane을 사용해 배포하는 방법에 대한 문서가 작성되어 있을만큼 검증이 완료된 플랫폼인것 같다.

 

참고로 해당 문서는 M1 Macbook pro 환경을 기준으로 작성되었다.

 

1. fastlane 설치

 

최초 fastlane 및 bundler 설치를 위해서는 mac에 기본으로 설치된 시스템 루비가 아닌 다른 방법으로 설치할 것을 권고 한다. (어차피 시스템 루비로 설치하려고 해도 권한 때문에 막힌다)

나의 경우 rbenv를 이용하여 루비를 설치하였다.

 

brew를 이용해 rbenv 설치

brew update
brew install rbenv ruby-build

설치가 잘 되었는지 확인을 위해 다음 명령어를 입력하면

rbenv versions

다음과 같이 현재 system 루비를 쓰고 있다는 사실을 알 수 있다.

* system

아래 명령어를 이용해 설치할 수 있는 버전 목록을 확인한다.

rbenv install -l

설치 가능한 ruby version list

rbev install {version}

인스톨 명령어를 이용하여 원하는 버전을 설치한 뒤 (fastlane은 2.5 이상의 버전을 지원한다.), version을 다시 확인해보면 아래와 같이 새롭게 추가된 버전이 함께 보일 것이다.

* system
  3.1.1 (set by /Users/......)

하지만 아직 글로벌 버전은 system 루비로 되어있다. 변경하도록 하자

rbenv global 3.1.1

다시 한번 버전을 확인하면 성공적으로 변경된 것을 알 수 있다.

마지막으로 쉘 설정 파일을 변경하여 rbenv의 path를 추가한다.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

 

루비를 설치 하였다면 번들러를 설치한다.

gem install bundler

번들러를 설치하였다면, 프로젝트의 루트 디렉토리로 이동한 뒤, 아래 명령어를 실행하면

bundle init

Gemfile 이라는 파일이 생성될 것이다. 해당 파일을 열어 다음과 같이 수정한다.

source "https://rubygems.org"

gem "fastlane"

 

이후 bundle update 명령어를 실행해주면 Gemfile.lock 이라는 파일이 생성되는데 이 두 파일을 버전관리에 추가한다.

gem install fastlane -NV

마지막으로 fastlane을 설치한다.

 

2. fastlane 설정

fastlane init

프로젝트의 root 디렉토리에서 다음과 명령어를 입력하면 아래와 같이 패키지 명을 입력하라고 나오는데, 프로젝트의 패키지명을 입력한다.

프로젝트 패키지 명을 입력하면 다음과 같이 json secret 파일의 path를 입력하라고 하는데, 쿨하게 패스하자.

이후 다음 질문에서도 n을 선택한다. (어차피 y를 선택해도 Json secret이 없기 때문에 실패한다ㅋㅋ)

설정이 완료되었다면 프로젝트 디렉토리에 fastlane이라는 이름의 디렉토리가 생성되었을 것이다. 해당 디렉토리 내에는 Appfile과 Fastfile이 존재할 것인데, 이에 대한 설명은 다음 포스트로 미루도록하겠다.

 

Next >

반응형