# fastlane

Jenkins를 이용한 Flutter 배포 자동화(feat. Fastlane)
Intro 내가 Jenkins를 처음 만난건 첫 회사에서였다. Flutter 로 앱을 개발하여 IOS 와 AOS 두 플랫폼 배포를 해야하니, 한두번은 그러려니 하겠지만, 매번 배포하려면 꽤나 귀찮고 오랜시간이 걸렸다. (특히 IOS는 TestFlight를 통해 배포했는데, 시간낭비가 유독 심했다) 결국 배포 자동화를 결심했고, 내가 상황에 딱 맞는 Jenkins 를 발견했다. > 이 글은 Jenkins 의 관한 자세한 설치 & 사용법은 설명하지 않습니다. 전체적인 흐름도 & 파이프 라인 코어부분만 설명하려 합니다. 나만의 집사 'Jenkins처럼' 위 사진 좌측에 깔끔한 양복차림의 집사님(?)이 바로 Jenkins. Jenkins 의 탄생은 이렇다. Hudson 이란 CI 툴이 Oracle 에 인수된후, 원래 개발자들이 Hudsond을 포크해서 탄생한게 Jenkins 라고 한다. <img width="100%" src="https://upload.wik

Flutter Android Fastlane 설정하며 겪은 에러들
Flutter에서 제공하는 문서 fastlane Google Api Error: Invalid request - The caller does not have permission 구글 API 에 권한이 없어 생긴 이슈이다. Play Store Console - 설정 - API 엑세스에 들어가서 서비스계정을 하나 생성하였다. 서비스계정을 생성할때는 서비스계정 - 서비스계정 만들기에서 생성가능 정확히 어떤 계정권한이 필요한지 몰라 권한은 "소유자" 로 주었다. 생성후 Google Play Console 에서 새로고침으로 서비스계정이 생성된것을 확인할수있었다. Play Console 관리에서 계정권한에

React Native Fastlane으로 자동 배포하기
Fastlane이란? Fastlane은 모바일 앱 개발의 여러 빌드 및 배포 과정을 자동화하기 위한 도구입니다. iOS와 Android 플랫폼 모두를 지원하며, 여러가지 "lanes"라고 불리는 스크립트를 통해 테스트 자동화, 빌드 생성, 메타데이터 관리, 앱 스토어 배포 등을 손쉽게 처리할 수 있습니다. Fastlane은 다음과 같은 기능을 제공합니다: Snapshot: 앱의 스크린샷을 자동으로 생성해줍니다. Scan: 앱의 테스트를 실행하고 결과를 취합합니다. Gym: iOS 앱을 빌드합니다. Match: 코드 서명 자산을 안전하게 저장하고 공유합니다. Deliver: iOS 앱을 TestFlight나 App Store에 배포합니다. Supply: Android 앱을 Google Play Store에 배포합니다. 이 외에도 Fastlane은 플러그인 아키텍처를 지원하여 커뮤니티에서 다양한 플러그인을 개발하고 공유하고 있습니다. 이 글에서
React Native 배포 자동화
앱의 다음 업데이트 출시를 위해 한창 바쁘게 개발을 하던 중에 팀원한테 배포를 자동화해서 시간을 줄여보는 게 어떻겠냐고 제안을 받았다. 지금까지는 개발이 끝나면 iOS, Android 각각 수동으로 빌드를 하고 QA 팀에서 테스트 앱을 다운로드할 수 있도록 firebase에 배포를 했다. 기획이나 디자인이 변경되는 상황이 매우 많기 때문에 개발이 완전히 끝나기 전에도 중간 점검을 위해 배포를 하는 일이 많았다. 이 과정을 매번 수동으로 진행하다 보니까 흐름이 끊기기도 하고 평균적으로 OS마다 20분 정도 소요되었으니 시간도 많이 부족하다고 느껴졌다. Fastlane 공식 홈페이지 설명에 따르면, Fastlane은 Android 및 iOS 배포를 단순화하기 위한 오픈 소스 플랫폼이다. Fastlane을 사용하면 development 및 release 워크플로우의 모든 측면을 자동화할 수 있다. 이 포스팅에서는 개발용 테스트 앱 배포에 대해서만 다룬다. Fastlane은 이미

FastLane 스터디(1) 설치하기
FastLane 설치 brew install fastlane bundler(fastlane의 업데이트를 해줌) 설치 gem install bundler FastLane을 프로젝트에 적용하기 FastLane을 설치할 프로젝트의 디렉토리로 가서 해당 명령어를 입력하자. fastlane init init을 하면 FastLane을 어떻게 사용할것인지 물어본다. 2,3번을 입력하면 애플 로그인을 해줘야한다. (6자리 핸드폰 인증번호까지 포함해서) 어떤 타겟을 사용할지 물어보고, 어떤 팀계정, 어떤 팀을 사용할것인지 물어보는데 해당되는 것을 입력하면 된다. 해당되는것을 입력완료하여 FastLane의 설치가 완료되면 FastLane의 사용법에 대해 알려준다.  fastlane match를 이용해 signing하기 (IOS)
cert를 match로 대체하기 fastlane에는 cert와 sigh를 이용해 사이닝하는 방법과 match를 이용해 사이닝하는 방법이 있다. 간단하게 설명하자면 cert와 sigh는 로컬 인증서를 기반으로 하고, match는 원격 저장소에 저장된 인증서를 기반으로 한다. 일반적인 경우 cert와 sigh보다는 match를 활용하도록 권장한다고 한다. 그 이유에 대해서는 cert 문서와 match 문서에 잘 나타나 있으니 참고해보면 좋을 것 같다. 그래서 이번에는 cert와 sigh를 match로 대체해보려고 한다. 먼저 match를 이용하기 위해서는 인증서를 저장할 원격 저장소를 만들어야 한다. 원격 저장소에는 git외에도 s3, google cloud 등을
React Native) fastlane으로 firebase app distribution 자동화하기
fastlane에는 다양한 plugin들을 제공하고, 그 중에는 firebase app distribution을 fastlane에서 관리할 수 있는 plugin도 존재한다. 이번에는 이 플러그인을 이용해 fastlane에서 firebase app distribution을 자동화해보려고 한다. IOS/Android 공통 셋팅 fastlane에서 firebase app distribution을 실행하는 방법은 firebase 공식 문서에 잘 나타나 있으므로, 이 문서를 따라 진행했다. IOS 문서 Android 문서 공통 셋팅인 경
React Native) Fastlane으로 배포를 자동화해보자 (Android)
지난번 Fastlane으로 배포를 자동화해보자 (IOS)에 이어 이번에는 fastlane을 이용해 android의 배포 자동화를 해보려고한다. 사전 준비 ios에서 앱 암호를 발급받아 환경변수로 fastlane에 제공해준 것과 같이 android 자동화를 위해서는 서비스 어카운트라는 것을 만들어 접근권한을 부여해주어야 한다. 해당 과정은 다음과 같다. 우선 google play console에 접속하여 API 엑세스 탭으로 접근하면 '서비스 계정'이라는 항목이 나오는데, 여기서 '서비스 계정 만드는 방법 알아보기' 버튼을 누른다. 이때 보여지는 가이드에서 Google Colud P
React Native) Fastlane으로 배포를 자동화해보자 (IOS)
Fastlane이란 fastlane이란 android와 ios 앱 어플리케이션을 자동으로 배포할 수 있도록 도와주는 오픈소스 플랫폼이다. fastlane을 사용하면 매번 앱을 빌드하고 배포할 때 수행해야하는 반복 작업들을 자동화할 수 있다. 이는 귀찮은 작업을 줄여주는 효과뿐 아니라, 소요되는 시간을 줄여주고 휴먼에러를 방지해주는 효과도 있기 때문에 자주 서비스를 배포해야하는 환경이라면 배포자동화를 구축하는 것이 좋다. 다양한 plugin들을 지원해주기도하고, github actions나 jenkins, Circle CI 같은 CI tool과도 연계해서 사용이 가능하기 때문에 특정 브랜치에 push했을 때 firebase app distribution에 배포하거나, codepush를 날려주거나, 정식으로 스토어에 업로드하는 등 다양한 상황에 맞춰 사용할 수 있는 범용성도 갖추고 있다. 이번에는 우선 ios 기준으로, testflight에 자동으로 배포하는 환경을 구축해보고자 한
[iOS] Fastlane으로 배포 자동화하기
1. Fastlane 설치 (Bundler 이용) Bundler Bundler 와 Gemfile 을 이용해서 fastlane 의존성 관리하기 1-1. 터미널에서 gem install bundler 입력해서 번들러 설치 만약, 에러가 발생했다면 아래 절차를 따른다. brew update brew install rbenv ruby-build rbenv versions : rbenv 가 잘 설치되었는지 확인 rbenv install -l : 설치 가능한 Ruby 버전 확인 `rbenv i

Fastlane을 사용하여 Testflight에 앱을 올려보자
Fastlane을 사용하여 Testflight에 앱을 올려보자 ‼️iOS 취준생이 작성한 글이므로 잘못된 정보가 있을 수 있습니다. CI/CD에 대한 필요성 그리고 편리함을 언뜻 들은적이 있지만, 프로젝트 개발에 등떠밀려 배우고 직접 사용해 볼 기회가 없었다. 그런데 문득 해커톤 때 iOS 개발자끼리 모여 얘기하는데, CI/CD로 Testflight에 테스터를 초대해서 출시전에 테스트를 할 수 있다는 얘기가 생각났다!!! 이거랑 앱스토어 배포만 자동화해주면 엄청 편할 것 같아서 좀 옛날에 했던 거지만 블로그 정리를 이제야한다...ㅎ fastlane이란 fastlane은 루비 기반 클라이언트 자동 빌드 오픈소스 라이브러리입니다. fastlane 설치 command + space를 눌러 터미널 실행 후 > brew install fastlane brew가 설치되어 있지 않은 분은 brew 공식 사이트 를 참고해서
flutter fastlane ios
default_platform(:ios) platform :ios do desc "Push a new release build to the App Store" lane :release do build_app(workspace: "Runner.xcworkspace", scheme: "Runner") uploadtoapp_store end lane :internal do puts ("env : #{ENV['ENV']}") // 환경 확인용 sh("bundle", "update") // gem 동기화용 match(type:'appstore',readonly:true) // ios 프로비젼 확인 incrementbuildnumber( buildnumber: latesttestflightbuildnumber + 1, skipinfoplist:true ) pod_install
flutter fastlane android
default_platform(:android) platform :android do desc "Play store in internal test" lane :internal do puts ("env : #{ENV['ENV']}") gradle(task: "clean") flutter_build supply( aab:"../build/app/outputs/bundle/release/app-release.aab", track:"internal", skipuploadmetadata:true, skipuploadimages: true, skipuploadscreenshots: true, ) send_slack end desc "build flutter" lane :flutter_build do sh("fvm","flutter", "clea

Fastlane을 통해 배포를 자동화 시켜보자
앱을 릴리즈하기 위해서는 약간의 절차가 필요합니다. Xcode에서 아카이브 진행 후 완료될때까지 기다렸다가 버튼 하나씩 눌러 가면서 AppstoreConnect에 업로드 하는 귀찮음이 도사리고 있죠. 이러한 수고로움은 자동화 시스템 도입으로 덜어줄 수가 있는데요. 바로 Fastlane이 그 역할을 해줍니다. 오늘은 개인 비서같은 이 Fastlane이라는 녀석을 프로젝트에 적용시키는 방법에 대해서 소개해보려 합니다. 먼저 Fastlane 세팅 작업을 위해서 Xcode 커맨드 라인 툴을 설치 하도록 하겠습니다. 그리고 Fastlane을 install 하고 <p align="c

fastlane match
안녕하세요!!! 8월의 마지막에 다급하게 포스트를 들고왔습니다. (헐레벌떡) 오늘 소개해드릴 내용은 fastlane match 라는 녀석인데요, Mash-Up 프로젝트를 진행하면서 굉장히 잘 써먹어서 공유해드리고 싶어서 가져왔습니다. 🥰 그러면 이번 글도 읽는분들에게 많은 도움이 되길바라며 시작해보겠습니다. > 해당 포스트는 flastlane 2.209.1. version 기준으로 작성되었습니다. What is fastlane match 먼저 match란 무엇이냐, fastlane에서 제공해주는 tool중 하나로, certificates와 profile을 팀 내에서 간편하게 동기화 시켜주는 도구입니다. Mash-Up에서 프로젝트를 진행하면 언제나 팀 내에서 인증서 문제로 골치가
React Native (ios) 자동배포 with fastlane
서론 React Native앱을 빌드해서 성공적으로 배포를 끝마쳤다. 오예~ 배포를 하기 위해서는 까다로운 심사를 받아야하지만 심사를 올리는 과정도 상당히 귀찮은 작업이다. 예를 들어 ios의 경우 >1. xcode를 연다. 앱을 archive해서 testflight에 올린다. testflight에 올리기 위한 무수한 yes버튼 apple connect에 들어가서 수출규정 관련 문서 경고 체크를 한다. 이러한 과정을 거쳐야 testflight에 올리고 심사를 받을 수 있는 상태가 된다. android의 경우는 좀 덜하다. > app > build.gradle파일 내의 defaultConfig의 versionCode와 versionName 변경한다. android studio > Build > Generate Signed Bundle / Apk를 통해 aab파일을 빌드한다. aab파일을 내부테스트에 올린다. 이런 복잡한 과정을 거쳐야
ios Fastlane cocoapods 에러
bundle update로 해결 1.이 안되는경우 brew install rbenv ruby-build rbenv versions로 확인 rbenv global 버젼 => 글로벌 버젼 셋팅 셋팅 sudo gem install bundler bundle update

[REACT NATAIVE] FASTLANE EXTENISON MATCH 하는 법 (feat. ONESIGNAL)
저희 서비스에서는 push notification 으로 일부분을 OneSignal 을 사용합니다. OneSignal 을 세팅할 때 iOS 에서 Extension 설정하는 부분이 있습니다. 그런데 저희 서비스의 iOS 인증서를 fastlane으로 동기화하는 과정에 있어서 OneSignal Extension 또한 동기화된 인증서를 생성해줘야 match가 되는 것을 알게 되었습니다. 실행 1. lane produce > fastlane produce document https://docs.fastlane.tools/actions/produce/ 먼저 lane 으로 Extension 의 identifier 를 설정해주도록 합니다. > com.xxx.xxx 는 project 의 identifier 입니다. 서비스의 identifier 를 입력해주시면 됩니다. skip_itc 는 Appstore Connect 에 앱을 추가하는 것을 skip 할 것인지

[REACT NATIVE] FASTLANE MATCH
종종 내 Mac 에서는 되는데 동료의 Mac 에서는 실행이 안되는 경우가 있어서 fastlane 으로 iOS 인증서를 동기화하기로 했습니다. 1. git repository 생성 인증서를 저장하고 불러오기 위해 git repository 를 하나 생성합니다. 저는 '프로젝트명-fastlane-match' 로 만들고 private 로 설정해두었습니다. 2. fastlane match 설치 기존에 fastlane 이 설정되어 있어야 합니다. fastlane이 설정되어 있지 않다면 설치하고 init 해주도록 합시다. > 참고) 데브야쿠자님 블로그 https://dev-yakuza.posstree.com/ko/react-native/fastlane/ fastlane 을 설치했다면 fastlane match 도 시작해주도록 합시다. 실행한 후 저장소로 git 을 선택해주도록 합시다. 그러면 ios / fastlane 폴더에 MatchFile 파일이 생성됩니다.
[RN] react-native-config 와 fastlane 연동 문제
회사에서 react-native-config 를 사용지 Android 에서 발생한 문제 해결 기록이다. 이슈 현재 회사에서 react-native-config 를 통해 3rd lib token 값을 관리한다. 그런데 그 중 운여에서 analytic 의 기록이 누락 되는 것을 확인 원인을 찾는 중, react-native-config 의 설정 파일인 .env 로딩이 제대로 안되는 것을 발견하였다. 원인 분석 현재 회사에서 product, staging, dev 환경에 때라 분리하여 root 디렉토리 하위에 env 폴더를 만들어 .env.product, .env.staging, .env.dev 파일로 분리해서 저장 되어 있다. 그리고 이 것을 build type 에 맞게 가지고 와서 사용할 수 있도록 app/build.gradle 에 아래 설정 값을 추가 해 두었다. 위와 같이 설정 이후 아래 명령어로 빌드하면 잘 빌드 되었다. > react-native run-