iyOmSd/Title: Swift

[Swift] Fastlane 자동화빌드 배포 CI/CD (1/2)

냄수 2020. 11. 19. 16:15
반응형

CI / CD 어디선가 들어본적 있으신가요??

이게무슨뜻일까요?

 

CI (Continuous Integration)

(빌드 테스트를 실시하는 프로세스) 통합 프로세스를 지속적으로 실시해주는거에요

 

CD (Continuous Deploy 혹은 Continuous Delivery)

프로덕션 환경으로 배포작업을 자동화하는것

앱에 적용한 변경사항이 버그 테스트를 거쳐 레포에 자동으로 업로드되고 언제든 실시간으로 배포가능

변경사항의 배포에 대한 비용 시간 위험을 줄일수 있어요

 

 

iOS앱을 배포하는 과정을 따라가보면 이게 왜 필요한지 필요성을 느낄수 있어요

저도 필요성을 너무 느껴서

글을쓰면서 처음으로 적용해보려구요 ㅎㅎ

 

 

iOS앱 배포과정은

 

앱을 아카이브를 해요 - 아카이브하는 시간

앱을 앱컨넥트에 업로드하고 - 배포시간

10분정도 아니면 더 걸릴 수도있는데 기다려야 앱컨넥트에 앱이 올라오고 - 10분이상 앱이 업로드될 때까지

앱을 테스트플라이트 혹은 앱스토어로 배포하는 과정까지

 

이게 연속으로 일어나는 과정이아니라서

할 때마다 클릭을 해줘서 다음 단계로 가야하는 부분이있어요

버그를 수정해서 빌드버전을 올릴때 계속 이작업을 반복하다보면

별건아니지만 귀찮음과... 반복작업...을 없애주는게!!!

자동화겟죠?! ㅎㅎ

 

자동화되는 원리는

개발한 코드를 레포에 푸시하면

깃에서 푸시가왔다는 hook을 통해서 자동화툴이 빌드를 시작해요

설정한 순서에맞게

빌드후 아카이브를하고

슬랙푸시를 받을 수도 있고

테스트플라이트에 배포를 시켜라 라고 순서를 저장을해놓으면

그대로 실행해주는거에요

 

 

자동화를 도와주는것들이있어요

bitrise fastlane jenkins gitlab gitAction... 

되게 많이나오는데 뭐가다른지 차이점을 잘모르겠어서 한번 찾아봤어요

 

 

jenkins

처음에 어떤것이 좋냐고 추천받으려고 물어봤을 때 많은분들이

추천해준 시스템이였어요

오픈소스 자동화 서버구요

오래된만큼 엄청많은 플러그인을 가지고있어서 좋아요

서버를 직접 구축하고 플러그인을 설정하고 하는 환경설정이 복잡하다는게 단점이에요

대신 구축을 한다면 git hook을 이용해서 코드변경시 혹은 정해진 시간에 주기적으로 빌드시킬수 있고

많은 언어들이 지원가능해서 많은 플랫폼에 적용할 수 있고

플러그인들도 많아서 많은 기능들을 할 수 있을것 같아요

서버개발자가 아니면 약간 힘들수도 있다고 많이하네요

설정이 복잡해서...

이를 대신해서 GitAction이나 Gitlab등 다른 자동화서버를 사용하는것 같았어요

 

fastlane

iOS빌드 툴로 유명하고 많이사용하고있어요

안드로이드와 호환은 잘 되지않는것 같구요

터미널로 실행시키는 거구요

계속 명령어로 실행 할 수 없으니까

푸시가 오면 자동으로 하는게 좋겠죠??

이 실행마저도 자동화하기위해서 Bitrise나 GitAction등 섞어 쓰는거 같았어요

 

서버를 직접 만들지않고

클라우드에서 동작하는 CI시스템들도 있어요

 

Circle CI

Travis CI.. 

잘 안사용하는것 같아서 스킵할게요 ㅎㅎ

 

Bitrise

모바일에 최적화된 CI시스템이고

좋은 UI를 가지고있어요

관리하기편하고 전체적인 CI에서 동작하는 워크플로우를 UI에서 처리할 수 있다고하네요

빌드실행하고 슬랙에 넘기는 로직을 관리할 수 있고

개인으로 사용할때 무료로사용하면 시간과 횟수에 제한이 있어요

fastlane을 자동화 툴로 지원

docker기반이라서 circle ci보다 좋다고하네요

 

 

 

 

 

혼자서 한번 해보는거라

비교적으로 쉽다고생각하는(?)

 

fastlane을 사용해보도록 할게요!!

 

fastlane설치후 gitignore꼭 해주세요

더미파일들이 많이 올라갈 수도 있다고하네요

 

Fastlane을 설치해야겟죠?

자세한 설치법은 링크에 있구요

docs.fastlane.tools/getting-started/ios/setup/

설치를 따라해보도록 할게요

오늘날짜기준으로 엑스코드버전은 12.2를 사용하구있구요

오옹... 명령어라인으로 할수잇도록해주는건가봐요

 

다음으로

homebrew가 있으니까 homebrew설치방법으로..

햇는데 실패되서 다시

gem을 이용해서 했어요

다운했으면 파일을 하나 만들어야해요

Podfile처럼 실행할것들을 적어놓아야 할 것 같네요

 

적용할 프로젝트로 이동해서

파일생성 명령어를 입력했더니

음 우선 테스트플라이트에 올려볼거니까

2번을 입력해주고

 

무얼올릴꺼니해서

1번 올려보구요

 

하면

애플ID를 입력받네요

개발자 인증을위한 과정인거같아요

입력해주고..

 

여러팀에 있어서

고르라고 떠서 골라주고

 

It looks like the app ' ' isn't available on the Apple Developer Portal

...

흠 왜일까요..

제 아이디가 메인계정이 아니라서 그런거 같아요

 

잘모르겠으니까 쉽게.. 다시 다른 계정으로..

 

잘동작하네요 ㅎㅎ

Gemfile, Appfile, Fastfile이 만들어지는걸 볼수 있어요

 

Fastfile에

tests를 써서 테스트나 UI테스트를 실행할 수 있어요

beta를 쓰면 테스트플라이트에 올릴 수 있고

release를 쓰면 앱스토어에 올릴 수 있어요

 

init시 선택에 따라서 자동으로 파일을 구성해줘요

 

바로 

fastlane beta

입력해서 바로 빌드를 시작할 수 있어요

 

빌드를 하다가..

앱암호를 따로 설정해줘야 하나봐요??

appleid.apple.com/account/manage

에 가서

생성해서 받은 영문자 암호를 다시 넣어주면 성공적으로 빌드를 다시 이어서하구요

 

잘 올라가고 있는게 보이네요 ㅎㅎ

 

계속 주기적으로 확인하면서

빌드가 완료되엇나 확인하는 걸 볼수있어요

fastlane을 쓰지않았다면 저 로그대신 제가직접 들어가면서 확인해야해요... 

 

 

성공적으로 빌드 완성!!

 

 

이제 다음에는 이작업을 수동명령어 입력이아닌

git repo에 push될때!!

동작시켜볼거에요

 

 

 

 

 

 

 

 

 

 

 

반응형