Jiseob Kim

iOS Developer

Tool - Fastlane을 알아보자 (개념)

30 Mar 2019 » Tool

오늘 포스팅 주제는 Fastlane

Fastlane은 자료도 굉장히 많고, 사용자도 많고, 많은 기업에서도 사용중으로 보인다 그럼 이게 뭘까? 앱에 사용되는 라이브러리는 아니고, 배포를 도와주는 프로그램, 툴이라 생각하면 좋을것 같다.

아직 초짜라 기능 5%도 못쓰는것 같으니 더 배움이 쌓이면 추가 포스팅 예정!

이번껀 개념정도만!



Q. 배포를 도와준다는 의미는?

많은 개발자들이 그렇듯, 귀찮고 반복적인 일은 자동화를 시키고 싶어한다,

함수도 계속 반복적으로 짜기 싫고 유지보수가 힘드니 나왔겠지?

포인트는 자동화

이해하기엔 예시만한게 없는듯하니 예를 들어보자,


ex) JS님 테스트하게 IPA 말아서 서버에 올려주세요

Fastlane을 찾게된 이유아닐까 싶다, AdHoc으로 말아서 서버에 올린뒤 테스터들에게 요청을 드리는 작업을할때 아카이브 하는것이 시간을 은근히 잡아먹어서 귀찮은점이 있었다.


기존 IPA 추출 과정

  1. 타겟 설정
  2. 빌드 클린
  3. 빌드
  4. 아카이브 선택
  5. 인증서 선택
  6. 기다리기
  7. 폴더 선택

위의 과정이 나만그런진 모르겠지만 귀찮다.


Fastlane을 이용한 IPA 추출 과정

  1. 터미널 열기
  2. 명령어 입력 fastlane gym
  3. 기다리기

아주 심플하다 맘에든다, 뭣보다 귀찮은 과정이 코드한줄로 끝나며, 완료되면 프로젝트 폴더에 파일들이 이쁘게 나와있다.



그게 기능이 끝인가?

아니다, 기능이 아주 많고, 디테일한 설정을 할 수 있다.



무엇을 더 할 수 있나?

  1. 아이튠즈 컨넥트에 앱을 추가할 수 있다.
  2. 인증서를 생성, 다운로드 할 수 있다.
  3. 인증서 관리하는 Github가 있다면, 다른 맥에서도 쓸수 있게 해당 github를 통해 매칭시키는 기능이 있다. (협업시 인증서 전달을 따로 할필요 없다)
  4. 앱 스크린샷을 자동으로 찍을 수 있다. - 아이튠즈컨넥트에 올리는 용도로 사용
  5. IPA 파일을 쉽게 만들수 있다.
  6. TestFlight에 빌드 제출을 할 수 있다.
  7. TestFlight에 구성원 추가, 제거 할 수 있다.
  8. 특정 작업 완료 후 슬랙으로 알리기 가능
  9. 앱스토어 빌드 제출 할 수 있다.
  10. Lane을 통해서 여러 기능을 묶을 수 있다.


아직 IPA 추출, 인증서 생성 다운밖에 못해봤다,,
스토어 빌드 제출은 실패 단계,
매칭 기능은 성공했으나 아직 이해가 더 필요

아직 활용을 잘 못하지만, 못하는 나조차도 위와 같은 기능들을 알고 있고, 다양한걸 할 수 있단걸 알고 있다.

10번은 설명이 더 해야할듯하다



Lane을 통해서 여러 기능을 묶다는 의미는? Lane이 뭐길래?

우선 이 툴의 이름이 fastlane이니 유추를 해보자

  • fast : 빠른 속도를 의미
  • lane : 차선, 통로를 의미

위의 기능들과 잘 생각해보면, 특정 기능을 빠르게 수행 해주는 것이라는 생각이 든다. 그렇담, 조금더 생각을 바꿔서


- 예시1

위의 무엇을 할 수 있는지 나열한 것의 1~9 각 기능을 한개의 통로, 차선, lane이라 생각해보자,

1번 레인 출발을 내가 외치면 1번 주자,운전자가 열심히 뛰어서, 아이튠즈 컨넥트에 앱을 추가하는 작업들을 후다닥 처리해서 완료치는것이라 생각하면 좀더 쉬울듯 하다.


- 예시3

다른 예시!! 출발 드림팀으로 생각해보자 달리면서 여러 미션 거리를 가지고 촬영을 하는 방송이다. 매회 방송마다 미션은 다르다. 주자가 출발해서 여러가지 미션을 통과해서 마지막에 완료!! 라고 외치는게 목표다.

위의 장점들은 초급 미션들이다

한번 실행했을때 1가지 하고 완료!! 를 외치면 된다.

우리가 방송을 보고 더 기쁠때는 어려운 과정을 통과했을때, 기쁨을 느낀다.

그럼 여러가지를 섞어보자.

  1. 배포전 스크린샷을 찍기,
  2. 인증서 최신것 사용하기
  3. 앱스토어에 빌드 제출하기
  4. 완료후 슬랙으로 알려주기


이렇게 여러가지 섞인 미션을 방송 1편이라 생각한다면 우리는 이 미션 시작!을 외치면 알아서 스크린샷을 찍고 인증서 최신것으로 매칭한담에 앱스토어 빌드 제출한뒤 슬랙으로 알림을 날리고 완료! 라고 하겠지?

위의 4가지 과정을 해야하는게 미션이고 이 미션이 곧 lane을 의미한다.

난 굉장히 좋은 예시같다 생각하는데, 다른사람한테도 그래야할텐데~~

그와중에 중요한건 fast 라는것~ 빠르게 귀찮지 않게 도와주는 도구



- Q. 내 회사앱은 한 프로젝트안에 앱이 여러갠데?

이거 진짜다. 내가 맡은 앱중 하나가 이렇다..

gym이라는 명령어를 사용하면 아주 쉽게 IPA를 만드는 작업이 된다. 근데, 별다른 셋팅을 안하고 fastlane gym이라는 명령어를 입력하면 첫번째 타겟(앱)을 IPA 추출해버렸다…

그래서 별다른 셋팅을 해줬다. fastlane gym(scheme:”AppName”) 이렇게~ 그랬더니 해당 앱으로 잘 IPA추출을 했다!!

이런식으로 세세한 설정이 가능하단걸 전달하고 싶었다.



- Q. 난 AdHoc으로 추출하고 싶은데?

회사에서 압축할때 AdHoc으로 추출할때가 많았지만, 위의 명령어를 쓰면 배포용이 나온다, 기본값이 앱스토어용인가보다.

이 점은 옵션을 주면된다!

fastlane gym —-export_method ad-hoc

그럼 adhoc으로 잘뽑아준다




그래서 단점은?

단점도 분명 존재한다. 근데 아직 내가 잘몰라서 발생하는 이슈이기도 하지만, 초보자에겐 알기전까진 단점은 단점이니깐! 불편한점 정도?


- IPA 추출할때 오류가 났는데 잘모르겠다

뭔가 촤라라라락 터미널을 가득 채운다. 빌드하면서 warning들을 다 뿌린다. 그러다가 오류가 마지막에 난다 대충 읽어보면, 오류났는데! 정확히 몰라!! 아래 명렁어써서 다시 해봐! 이런다. —verbose 그럼 로그에 상세히 남나보다. 근데, 로그 잘보면 되겠지만 서툴러서 잘 보지도 못하겠다.. 그래서 Xcode에서 아카이브 해봤더니, 착하게도 빨간 느낌표를 보여주면서 뭐가 문제다라고 잘 얘기해준다.

물론 로그 잘보면 되겠지, 근데 Xcode보다 불친절하단건 사실!!




마무리

다른 사람들이 많이 칭찬하고 많이 사용한다면, 이유는 분명있는 것은 진리인듯하다.

RxSwift도 더 해봐야지! 매력을 느낄때까지…

아무튼, Fastlane의 매력은 충분히 있는듯하고, 다음 편에서 설치랑 간단한 사용법을 다뤄봐야겠다.