FE/React & RN

[React-native] 자동 배포

Chars4785 2021. 11. 17. 17:44

1. 서론

회사에서 빌드를 많이 뽑아야 하는 이유가 있어서 자동배포에 대한 공부를 해야할 필요가 있었다. 그런데 찾아보니까 jenkins Xcode 를 지원해 주는 플러그 인도 있었지만 Xcode 9 정도까지만 지원해 주는것 같아서, 포기하고 Fastlane을 이용하게 되었다. AWS, Circle CI, Travis CI, 등 CI,CD 가격대비 많은 양을 뽑는것 같지 않아서 원격으로 하는 부분은 포기하고 로컬에서 배포를 뽑도록 했다.

 

맥미니가 없는 관계로

1. Xcode

2. Fastlane

3. AWS S3

4. Jenkins

5. Github

 

2. 이해

CI/CD

Fastlane : 자동화 툴로써, ios, android 에 유용한 기능들을 제공한다. 

- 스크린 샷 제공: 직접 원하는 화면들의 스크린 샷을 찍는 기능 제공 ( 수많은 언어 디바이스에 서비스를 하는 회사에게는 유용할듯 ) 

- Beta: test 하기 위한 작업 apk, ipa 파일 생성 및 testFlight 에 전송할수 있도록

- App Deployment: app store. google store 에 쉽게 올리수 있도록

- Code signing: ios 같은 경우는 app store 에 올리기 힘든데, 앱을 서명하고 ios기기가 누가 이 앱을 서명했고 서명한 이후에 앱이 변경되지 않았다는 것을 증명하기 위해 사용되는 과정

https://m.blog.naver.com/mym0404/221611576550

 

jenkins

 

프로젝트에 CI를 통합하는 방법을 이해하려면 Jenkins  Fastlane의 작동 방식을 이해해야합니다 . 간단히 말해 Jenkins는 Java로 작성된 오픈 소스 지속적 통합 서버이며 지속적 통합 빌드를 관리하는 데 가장 널리 사용되는 도구 중 하나입니다. Jenkins는 빌드, 문서, 테스트, 패키지, 준비, 배포, 정적 분석 등을 포함하여 기본적으로 Jobs 라고하는 라이프 사이클 프로세스 인 전달 파이프 라인 을 생성 할 수있는 기능을 제공합니다 . 작업은 파이프 라인을 형성하는 순서로 서로 연결되며 Fastlane이 관여합니다.

Fastlane 은 모바일 프로젝트 (iOS 및 Android)의 배포 및 배포 프로세스를 자동화하는 데 사용되는 오픈 소스 도구로, 패키징, 코드 서명, 빌드 배포 및 배포와 같은 모바일 앱의 수명주기 내에서 수많은 자동화 기능을 제공합니다. 더 많이. 패스 트레인은 만들 수 있습니다 레인 이라는 일련의 명령 즉, 기본적으로 스크립트입니다을 작업 우리는 자동화 할 워크 플로우을 설명합니다.

Travis CI

 

 

 

https://ichi.pro/ko/bildeu-silpae-choesohwa-2-bu-react-native-devops-gaideu-154199190497661

 

빌드 실패 최소화-2 부, React Native DevOps 가이드

TLDR : 바이너리 빌드 시간이 느립니다. 환경 변수를 관리하고 빌드 전 검사를 실행하여 실패한 빌드로 인한 개발자 시간 낭비를 최소화합니다.

ichi.pro

3. 개발 시작

3-1 Fastlane 설치

3-2 설정

Fastfile 안에 이런 내용이 존재 한다.

  • desc: lane에 대한 설명.
  • custom_lane: lane를 실행시킬 명령어.
  • do ~ end: 이 lane으로 인해 실행될 명령어들을 정의.
fastlane custom_lane

위와 같이 실행 시킬수 있다. fastlane 에서 testFlight 가 아닌 ipa만 추출하고 싶을 때는 gym 을 사용하게 된다.

참고

https://docs.fastlane.tools/actions/build_ios_app/

 

fastlane gym

추출할수 있지만 커스텀 하기 위해서

desc "Test Lane"
lane :test_lane do
    clear_derived_data
    gym(
        scheme: "Foo",
        export_method: "ad-hoc",
        clean: true,
        output_directory: "path/to/dir"
    )
end

gym뒤에 괄호를 열어줬고, 그 안에 옵션들을 나열했다.

  • scheme: 해당 프로젝트의 타겟을 설정해준다. (한 workspace안에 여러 앱이 있을 경우 필요하다.)
  • export_method: 인증서 옵션 주는 부분이다. (종류: app-store, ad-hoc, package, enterprise, development, developer-id)
  • clean: 빌드 클린 여부이다, true or false 주면 된다.
  • output_directory: 결과물들을 저정할 위치를 셋팅해주는 값이다. (안적으면 해당 프로젝트 폴더)

3-3 Jenkins 설치

 

 

https://jiseobkim.github.io/tool/2019/04/28/Tool-FastLane-Lane-%EC%82%AC%EC%9A%A9%EB%B2%95.html

 

Tool - Fastlane Lane 사용법

나만의 공간

jiseobkim.github.io

RN - fastlane 정리

 

https://docs.fastlane.tools/getting-started/cross-platform/react-native/


fastLane 통한 ipa 파일 추출

https://jepark-diary.tistory.com/21?category=874567

 

https://afrobambacar.github.io/2019/01/react-native-ci-cd-with-travis-ci-and-fastlane.html불러오는 중입니다...

 

Fastlane, Travis-CI로 React Native 프로젝트 배포 자동화 만들기 (1)

Fastlane과의 혈투 1편

afrobambacar.github.io

 

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

불러오는 중입니다...

 

https://sesang06.tistory.com/124

불러오는 중입니다...

 

https://dev-yakuza.posstree.com/ko/react-native/fastlane/

불러오는 중입니다...

 

https://blog.teammondrian.com/fastlane-circlecireul-iyonghayeo-react-native-devops-doibgi-2/

불러오는 중입니다...

 

https://stackoverflow.com/questions/31404884/building-ios-project-with-jenkins-on-ubuntu-linux