Study + Daily = Steadily 자세히보기

Development/Android

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

레카아범 2022. 4. 20. 18:36
반응형

< Prev   



로컬 환경에서 fastlane이 잘 동작하는걸 확인했다면 깃헙 레파지토리로 이동하자

 

Github Action 설정에 앞서..

자동화를 하려는 프로젝트의 branch 전략에 대해 명확히 파악하는 것이 중요하다. (보통 이미 브런치 전략은 파악하고 있겠지만..) Github Action이 실행되는 조건(트리거)은 설정하기 나름이겠지만, 일반적으로 특정 브런치에 푸쉬 혹은 PR 됐을 때를 기준으로 Job을 실행시키기 때문에, 어떤 브런치에 어떤 상황에서 트리거가 발생할지 고민하고 설정해보기를 바란다.
브랜치 전략에 대해 모른다면 해당 글을 참고하도록 하자. 알기쉽게 잘 설명되어 있다 

 

참고로 해당 프로젝트는 git-flow 전략을 사용하며 release 브런치에 PR이 발생했을 때 workflow가 동작하게 설정하였다. 

 

위 그림 순서대로 Actions - set up a worklfow yourself 를 선택하면 아래와 같은 화면이 나타날 것이다.

Github Action의 workflow를 만드는 화면이다. 

Github Acion에 대해서 자세히 알고 싶다면 공식 문서를 확인하도록 하자.

반응형

yml 파일명을 알아보기 쉽게 변경한 뒤 아래와 같이 입력한다.

name: Android Fastlane

on:
  pull_request:
    branches: 
      - release

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: 11

    - name: set up Ruby
      uses: actions/setup-ruby@v1
      with:
        ruby-version: 2.6

    - name: install ruby bundle
      run: |
        bundle config path vendor/bundle
        bundle install --jobs 4 --retry 3
    - name: run fastlane for QA
      run: bundle exec fastlane qa

대략적인 내용을 살펴보자면 다음과 같다.

 

해당 워크플로에 대한 트리거를 설정한다.

트리거에 대한 자세한 설명은 해당 문서를 참고하도록하자

release 브런치에 pull request가 발생하면 트리거가 동작한다는 내용이다.

 

jobs - 여러 step으로 구성되어있다.

하단의 runs-on 에서 지정한 가상 환경의 인스턴스(런너)에서 실행되게 된다.

최신버전의 우분투 환경의 런너를 지정한다

 

레파지토리를 런너에 체크아웃한다.

런너에 안드로이드 빌드 및 fastlane을 실행하기 위한 환경을 설치한다.

 

setup-java  : 자바 설치

setup-ruby : 루비 설치

 

 

 

 

 

런너에서 해당 명령어들을 실행 시킨다.

install ruby bundle : bundler 설정 및 인스톨

run fastlane : fastlane 실행





이후 release 브런치에 PR을 요청하면 다음과 같이 workflow가 실행이 되고

Details를 눌러 다음과 같이 진행과정도 확인할 수 있다.

Firebase 콘솔로 이동하면 다음과 같이 성공적으로 업데이트 되었음을 알 수 있다.

 

Actions 탭에서 workflow의 실행 목록도 확인 가능하다.

 

지금까지 fastlane + github actions를 이용한 기초적인 배포 자동화에 대해서 포스팅하였다.
생각보다 써야할 내용도 많았고, 사이에 코로나에 걸려버려서 포스팅이 자꾸 미뤄지게 됐다.
(m1 환경에서 작업 시, github actions에서 문제가 발생하던데 이에 대해서는 알아보고 포스트를 수정하도록 하겠다.)

 

다음 포스트는 이렇게 힘들게 작업했던 배포 자동화를 UI 툴(bitrise)을 통해 쉽게 적용하는법을 포스팅하도록 하겠다.

< Prev   

반응형