Fastlane 명령을 Bitrise에 통합 (android,ReactNative)

아래 기사에서 ReactNative 앱 배포를 Fastlane으로 자동화하는 절차를 소개했습니다.
Fastlane에서 ReactNative 배포 자동화 (android)

이번에는 CICD 도구로 유명한 Bitrise를 사용하여 Github에 push했을 때 자동으로 fastlane이 실행하는 메커니즘을 구축합니다.
ios판은 이쪽↓
Fastlane 명령을 Bitrise에 통합 (ios,ReactNative)

사전 준비



Bitrise에 대상인 Github의 repository를 등록해 둡니다.
주의점으로서, SSH의 공개키의 등록입니다만, repositry 단독이 아니고, Github 유저에 대해서 등록하도록(듯이) 합니다.
repository 단위로 등록하면, fastlane 실행시에 증명서를 당기는 곳에서 에러가 발생합니다.

Bitrise

GitHub


또한, 나중의 설정에서 환경 변수를 참조하는 관계로 android/app/build.gradle 의 파일 기술을 일부 변경합니다.

build.gradle
    signingConfigs {
        release {
                storeFile file(System.getenv("MYAPP_UPLOAD_STORE_FILE"))
                storePassword System.getenv("MYAPP_UPLOAD_STORE_PASSWORD")
                keyAlias System.getenv("MYAPP_UPLOAD_KEY_ALIAS")
                keyPassword System.getenv("MYAPP_UPLOAD_KEY_PASSWORD")
        }
    }

환경 변수 설정



다음 변수를 추가합니다.GITHUB_USER_EMAILGITHUB_USER_NAME는 사용 중인 Github에 대한 정보를 입력합니다.


secret 설정



다음 변수를 추가합니다.GOOGLE_JSON_SECRET_FILE json 파일은 google play console의 api 파일이므로 아래 기사에서 얻은 이름으로 다시 작성하십시오.
google play console의 api 얻기
  • MYAPP_UPLOAD_STORE_FILE = $BITRISE_SOURCE_DIR/android/secure/my-upload-key.keystore
  • MYAPP_UPLOAD_STORE_PASSWORD = $BITRISEIO_ANDROID_KEYSTORE_PASSWORD
  • MYAPP_UPLOAD_KEY_ALIAS = $BITRISEIO_ANDROID_KEYSTORE_ALIAS
  • MYAPP_UPLOAD_KEY_PASSWORD = $BITRISEIO_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD
  • GOOGLE_JSON_SECRET_FILE = $BITRISE_SOURCE_DIR/android/secure/test.json


  • 코드 서명 설정



    keystore 파일 업로드



    아래 기사에서 얻은 keystore 파일을 업로드합니다.
    keystore 작성 정보
    그런 다음 keystore를 만들 때 입력한 alias와 password를 변수에 입력합니다.
    참고:
    MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
    MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
    MYAPP_UPLOAD_STORE_PASSWORD=*****
    MYAPP_UPLOAD_KEY_PASSWORD=*****
    



    google play console의 api 파일 업로드



    아래 기사에서 얻은 keystore 파일을 업로드합니다.
    google play console의 api 얻기

    File Storage IDJSON_SECRET 를 입력합니다.

    Workflow 설정



    아래 이벤트를 추가합니다.
    기본적으로 추가한 후에 설정을 변경할 필요는 없지만 일부 이벤트는 설명을 다시 작성합니다.



    스크립트



    script contents를 아래와 같이 합니다.
    #!/usr/bin/env bash
    # fail if any commands fails
    set -e
    # debug log
    set -x
    
    # Add github.com to known host 
    ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
    
    # Configure Git user
    git config --global user.name $GITHUB_USER_NAME
    git config --global user.email $GITHUB_USER_EMAIL
    

    File Downloader(첫 번째)



    Download source url$BITRISEIO_ANDROID_KEYSTORE_URL 입력
    Download destination path$MYAPP_UPLOAD_STORE_FILE 입력



    File Downloader(두 번째)



    Download source url$BITRISEIO_JSON_SECRET_URL 입력
    Download destination path$GOOGLE_JSON_SECRET_FILE 입력



    Run npm command



    Working directory
    $BITRISE_SOURCE_DIR 입력
    The npm command with arguments to run
    install 입력



    fastlane



    fastlane lane$FASTLANE_LANE 입력
    Working directory$FASTLANE_WORK_DIR 입력


    트리거 설정



    임의의 브랜치에 push 했을 때에, 어느 wrokflow를 실행하는지를 설정합니다.
    workflow는 이전에 설정한 flow를 선택합니다.



    실행



    지정한 branch로 push하면, Bitrise가 발동합니다.

    버전 번호 자동 증가 정보



    fastlane의 설정으로 버전 번호는 자동으로 올라갑니다만, Bitrise의 서버상에서 실행되기 때문에 수중의 파일에서는 갱신되지 않는 문제가 발생합니다.
    아래 기사에서 그에 대한 대응법을 기술했습니다.
    Bitrise 넘버링을 이용하여 버전의 자동 증가를 실현 (ReactNative, android)

    좋은 웹페이지 즐겨찾기