
모바일
Fastlane
iOS 및 Android 앱의 빌드와 출시를 자동화하는 오픈소스 플랫폼
StackOverflow 질문 수: 1537
Github Stars : ★ 40017
사용 기업

에이블리

뤼이드

큐피스트

당근

마이리얼트립

마켓컬리

채널코퍼레이션

위대한상상

비바리퍼블리카

하이퍼커넥트

우아한형제들

라인

쏘카

튜링

닥터나우

미스터블루

핀다

실비아헬스
더 보기
아테나스랩
하루에도 10번 배포하는 Flutter 앱 CI/CD 구축하기
안녕하세요 아테나스랩 클라이언트 챕터 Mason입니다.아테나스랩 클라이언트 챕터에서는 Flutter를 이용해서 오늘학교 앱을 개발하고 있습니다. 또한 다른 직군의 팀원들과 협업을 통해 앱 기획에도 기여하고 있습니다.이 글에서는 오늘학교에서 왜 CI/CD를 도입하게 되었는지, 여러 서비스들 중 어떤 서비스를 선택했는지, 그리고 실제로 어떻게 도입했는지에 대한 과정에 대해 이야기를 해보려고 합니다.CI/CD란?단어의 뜻은 코드에 대한 지속적인 통합(Continous Integration) 및 지속적인 배포(Continous Delivery)입니다.나눠서 보자면 CI는 빌드 및 테스트 자동화하는 것, CD는 배포를 자동화하는 것이라고 볼 수 있습니다.큰 틀에서는 앱 출시를 위한 과정을 자동화하는 과정입니다.왜 도입했을까?현재 오늘학교는 내부 테스트를 위한 배포를 파이어베이스 App Distribution을 통해 하고 있습니다. 기존에는 CI/CD가 제대로 구축이 되어 있지 않은 상황이었습니다. 결국 이 과정을 수동으로 하다 보니, 시간이 많이 소요되고 실수도 종종 발생했습니다. 한 가지 예로 개발 서버로 빌드한 앱이 출시될 뻔한 적도 있었습니다. 아찔한 상황이죠..이러한 Human Error를 막고, 자동화를 통한 시간 절약을 하게 된다면 여러 장점이 생기게 됩니다. 내부 배포를 수월하게 해서 테스트가 용이해지고, 그로 인해 서비스 퀄리티를 높일 수 있습니다. 결국 유저에게 더 좋은 서비스를 제공하기 위해 CI/CD를 도입하게 됐습니다.어떤 툴을 사용할까?오늘학교 CI/CD는 Github Action과 Fastlane을 사용합니다. GitHub Action은 Github 레포지토리와 연동되어 사용할 수 있는 CI/CD 툴입니다. GitHub Action이 Jenkins에 비해 사용 설정이 간단하다는 점 뿐만 아니라, 오늘학교는 GitHub로 코드를 관리하고 있다는 점과 비교적 사용하기 쉬운 YAML 문법으로 workflow를 구성할 수 있다는 점을 고려하여 GitHub Action을 사용하기로 결정했습니다.Fastlane은 iOS, Android의 배포 자동화 툴입니다. 저희는 Flutter를 이용해 두 플랫폼을 모두 지원하기 때문에 Fastlane을 이용하여 인증서 관리 및 배포하는데 이용합니다.어떻게 GitHub Action을 이용할까?GitHub Action은 Runner라는 가상 머신에서 동작합니다. GitHub-hosted Runner라고 GitHub에서 제공하는 머신이 있긴 한데…좀 비쌉니다.. 저희 같은 경우는 iOS를 빌드해야하기 때문에 macOS를 사용해야 하는 상황이었으니까요. (이 글을 작성하는 시기에는 달러 환율이 어마어마 했습니다..)다른 CI/CD 서비스 중에 Code Magic이라는 것도 있는데, 요것도 가격이 비슷했습니다.그래서! 처음 구축하는 CI/CD이기도 하고, 테스트도 많이 발생할 것 같아서 Self-Hosted Runner라는 것을 사용하기로 했습니다. GitHub-hosted Runner는 GitHub에
fastlane
flutter
github
githubaction
스캐터랩
GitHub Actions로 App 자동으로 배포하기
GitHub Actions로 App 자동으로 배포하기루다와 함께 사용하는 메신저 'Nutty' 자동으로 배포하기핑퐁팀은 2022년 상반기에 루다와 유저를 만나게 하는 수단으로 더 이상 페이스북 메신저를 사용하지 않고 자체 메신저 앱을 개발하기로 결정했습니다.저희는 빠르게 MVP 형식의 메신저 앱을 완성하여 배포한 후 지속적인 업데이트를 통해 앱의 완성도를 올리자는 계획을 세웠고, 이를 위해 앱을 빌드하고 배포하는 과정이 번거롭지 않도록 최대한 자동화하였습니다. 덕분에 메신저 앱 ‘너티’를 안정적으로 배포하고 빠른 속도로 발전시켜 나갈 수 있었습니다.본 포스트에서는 루다와 함께 사용하는 메신저 ‘너티’의 빌드와 배포를 자동화하는 과정을 설명해 보겠습니다.빌드 및 배포 스크립트자동화를 고려하지 않고 안드로이드와 iOS 앱을 빌드할 때는 각각 안드로이드 스튜디오와 Xcode에 있는 빌드 버튼을 눌러서 빌드를 하게 됩니다. 그렇게 빌드된 결과물을 Google Play 스토어와 App Store에 올리기 위해서는 각 플랫폼에서 업로드 버튼도 눌러줘야 합니다. 이러한 수고스러움을 덜기 위해 fastlane을 사용하여 각 작업이 버튼의 클릭이 아닌 스크립트의 실행으로 처리되도록 자동화했습니다.fastlane은 앱을 빌드하고 배포하는 과정에서의 여러 작업들을 처리하는 스크립트를 제공해줍니다. 또한, 스크립트를 조합해서 새로운 스크립트를 Fastfile 에 정의할 수 있습니다. 공식 문서에 따라 fastlane의 설치 및 설정을 진행 한 후 아래와 같이 Fastfile 을 작성하면, 한 줄의 명령어( fastlane release )로 안드로이드 앱을 빌드하고 스토어에 업로드까지 할 수 있습니다.default_platform ( :android ) platform :android do lane :release do sh "./pre_build.sh" # 미리 작성한 shell 커맨드를 실행할 수도 있습니다. gradle ( task: "clean bundleRelease" ) upload_to_play_store ( track: "internal" , release_status: 'draft' ) end end인증 정보 관리앱을 빌드하고 그 결과물(.aab, .ipa)을 스토어에 배포하기 위해서는 다음의 인증 정보가 필요합니다.안드로이드 플랫폼에서의 인증 정보들과 App Store Connect API Key는 링크되어 있는 문서를 따라서 한 번만 설정하면 추가로 관리할 필요가 없습니다. 하지만, Provisioning Profile 인증서는 앱의 Capabilities가 추가되거나, 등록된 Devices가 변경되는 경우 재발급을 받아야하기 때문에 지속적으로 관리해야 합니다. fastlane은 이 문제를 해결하기 위해 match라는 솔루션을 제공합니다.match는 지속적으로 변할 수 있는 Provisioning Profile 인증서를 프라이빗 GitHub 레포지토리를 통해 동기화할 수 있는 솔루션을 제공해줍니다. 가이드에 따라 match를 설정한 후,
fastlane
github
브랜디
Slack으로 iOS 앱 배포하기
안녕하세요. 브랜디 iOS 파트의 고세림입니다. 이 문서에서 저는 브랜디 iOS 파트에서 앱을 배포하는 방법을 소개하고자 합니다. 제목과 같이 저희는 슬랙을 사용해 iOS 앱을 배포하는데요, 왜 이 방식을 선택하게 되었을까요? 본격적으로 소개하기 전에, 저희 파트의 앱 배포 방법 변천사를 먼저 보고 가시죠. XCODE를 사용한 배포는 전통적이지만, 불편합니다. 직접 빌드 넘버를 올리고, 아카이빙합니다. 아카이빙을 하는 동안에는 다른 작업을 할 수 없죠. 여러 과정을 직접 진행해야 하기 때문에 모니터링을 해야 한다는 아쉬움이 있었습니다. 그래서 우리는 배포 자동화 툴 FASTLANE을 도입하기로 합니다. * fastlane release branch:release/release trigger:#deliver_debug project:brandi 다음과 같은 형태로 명령어 한 줄만 입력하면 원하는 옵션에 맞게 앱 배포가 이루어집니다. 스크립트를 잘 작성하면 빌드 넘버도 직접 올리지 않아도 됩니다. 그러나 FASTLANE도 완벽하지는 않았습니다. 아카이빙하는 동안에는 Xcode 사용이 어렵다는 아쉬움이 여전히 존재합니다. 간혹 팀원 간 배포 환경이 달라서 문제가 될 수도 있고요. 관련 명령어를 모두 파악해야 하고, 명령어를 잘못 입력할 가능성도 있습니다. 처음 앱 배포 명령어를 입력하게 되는 주니어 개발자는 왠지 모르게 덜덜 떨게 됩니다.. 제 이야기입니다. Fastlane, 매우 편리한 배포 자동화 툴이지만 여전히 아쉬움이 있어서 더 나은 방법을 모색합니다. 저희 파트에서는 배포용 머신을 따로 사용하기로 하였습니다. 배포 중 로컬 머신에서 Xcode 사용이 어렵다는 아쉬움과 다른 환경에서 배포가 될 수 있는 문제를 방지할 수 있죠! 하지만 아직 모든 문제가 해결된 것은 아닙니다. 명령어를 직접 입력해야 한다는 아쉬움. 아직 해결되지 않았습니다. 또한 배포 시 머신에 원격으로 접속해야 한다는 점, 여러 팀원이 접속하기 때문에 환경이 수시로 바뀔 수 있다는 점이 새로운 아쉬움으로 급부상합니다. 주니어 개발자도, 집에 가는 버스에서도 배포할 수 있도록. SLACK 커맨드 그래서 iOS 파트에서는 Slack 커맨드를 사용해 배포하기로 합니다! 바로 배포 머신을 Slack과 네트워킹하기 위한 서버로 사용하는 것입니다. 팀원들이 직접 배포 머신에 접속하지 않아도 되니 기존의 아쉬운 점도 해결될 뿐더러, 슬랙 콘솔에서 선택한 옵션에 따라 fastlane 명령어가 구성되기 때문에 명령어를 잘못 입력할 가능성도 떨어지게 됩니다. 이제 배포를 할 때의 부담도 현저히 줄어들게 됩니다. 노트북이나 데스크탑이 아닌 스마트폰으로도 배포를 할 수 있고요. 그래서 슬랙으로 어떻게 앱을 배포하는지, 지금부터 결과물과 함께 소개하겠습니다. SLACK 커맨드로 앱 배포하기 먼저 슬랙에서 /배포 커맨드를 호출하면 콘솔 창이 나타납니다. 브랜디는 브랜디, 하이버, 마미 세 개의 프로덕트를 관리하고 있으니 배포를 원하는 프로덕트를 먼저 선택합니다. 프로덕트를 선택하면 배포를 원하
fastlane
slack
CJ올리브영
올리브영 iOS 테스트앱 자동배포하기
올-하! 💚 안녕하세요. 여러분! 올리브영에서 iOS 앱 개발을 담당하고있는 럭셔리💍 입니다. 오늘은 올리브영 iOS 테스트앱에 자동배포 프로세스를 적용한 이야기를 해보겠습니다~~!😮 자동 배포 환경을 하루도 안걸려서 구축했다고?사실 뻥... 이 아니라 진짜에요 ㅎㅎ 그만큼 쉽고 간단하다는 소리겠죠?? 수동 배포를 한다고 가정(🏠)해봅시다! 버전 번호 올리고 ~, 아카이브 하고~~, 앱스토어에 올리고 ~~, 배포 완료 공유하고 ~~... 생각만해도 머리가 터질것만 같네요.. 🚀이러한 이유로, 자동 배포 환경을 구축하고자 마음을 먹게 되었고, 생각 보다 간단하여 짧은 시간내에 구현해낼 수 있었답니다!🤗어떻게 구현하였을까요?? 자~~ 따라오시죠!!🏃🏃⛏️ 구축 과정을 한번 살펴볼까요??iOS 앱 자동 배포인 만큼 당연히 맥()을 사용하시겠죠? 터미널로 설치해봅니다.• • fastlane은 xcode의 Command Tool을 사용하므로 설치 해주셔야 합니다.• • homebrew를 사용해서 fastlane을 설치해주도록 합니다.fastlane설치가 끝나셨나요? 아주 간단한 과정이었죠? ㅎㅎ 😗 그럼 본격적으로 fastlane을 사용해봅시다.• fastlane을 적용하고자 하는 프로젝트 폴더로 이동합니다.• 명령어로 이동하세요~~!(➡️)• • 다음과 같은 화면이 나오셨나요? 저희는 앱을 테스트플라이트에 업로드 하는 것이 목적이기 때문에, 2번을 선택합니다.• 2번을 선택하시면 다음과 같은 화면이 나타날 것입니다.• 비밀번호 같은 경우는, 해당 ID의 비밀번호가 아닌 appleID페이지에서 앱 암호를 발급받아서 사용하셔야합니다!!• AppleID 페이지로 이동• 보안 탭에 앱 암호를 선택하여 앱 암호를 발급 받습니다~~!• 다음과 같은 화면이 나타나면 계속 return키로 넘어가시면 됩니다.• 완료되면 프로젝트 폴더안에 다양한 파일들이 생성될 것이에요~~!fastlane 초기화 작업이 끝나셨나요? 설치보다 더 간단하지 않나요? ㅎㅎ 그럼 fastlane을 잘 활용할 수 있도록 설정해봅시다!자 ~ 그럼 fastlane 폴더안에 있는, Fastfile을 수정해봅시다.• • 저 같은 경우는, 맥에 두가지 버전의 xcode가 설치되어있습니다.• 이 중 어떤 버전의 xcode를 활용하여 빌드할지 결정해주어야합니다.• 한 개의 xcode만 설치되어있다면 이 과정은 무시하셔도 됩니다~~!• 저 같은 경우는 12.4버전의 xcode를 선택해주었답니다~!• • 매번 릴리즈버전을 배포할때마다 버전은 수동으로 올려주는게 편하지만, 지속적으로 업로드 해야하는 테스트 앱 같은 경우는, 빌드번호를 수동으로 올리는게 상당히 귀찮은 일입니다 ㅠㅠ• 따라서, 테스트플라이트에 올라가있는 가장 최신버전의 빌드번호를 가져와서 +1 해주는 코드를 작성해 봅시다.• • 업로드가 완료되었으면, 알림을 통해 알려주어야겠죠? 저희는 슬랙채널을 통해 알림을 받아보고 있답니다.• • slack에서 알림을 받기 원하는 채널에 들어간다.• 제일 위로 올려서 채널명을 클릭한다.• "통합"을 클
fastlane
연관 기술 스택

Bitrise